ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology Vincent Phuah , John R. Nicol , Yechezkal-Shimon Gutfreund GTE Laboratories Incorporated , 40 Sylvan Road , Waltham , MA 02254 , U.S.A. ABSTRACT Asynchronous transfer mode -LRB- ATM -RRB- technology is being touted as a ? silver bullet ? solution that will enable a host of new and advanced multimedia services seamlessly across both local and wide area networks . While it certainly appears likely that ATM will have a genuine impact on the future of business communications , a major hurdle that needs to be overcome before this happens lies with the semantic gap that exists between the ATM technology development and marketing community and the prospective customer base which stands to benefit from the technology . The work described in this paper represents our attempt to help close this gap through an examination of the kinds of multimedia business applications we believe ATM technology will provide its end users . We describe sample demonstration applications developed at GTE Laboratories that help to explain how ATM can impact business communications from the desktop . A further theme of the work described concerns our efforts to take best advantage of key features of ATM to assist ongoing investigation of multimedia application concepts and their implementation . 1 . Introduction A major attraction of asynchronous transfer mode -LRB- ATM -RRB- technology is its potential to transport rich isochronous streams of media , such as audio and video , at high speed and with guaranteed quality of service across the network to the desktop . Partly based on such observations , ATM is being touted by many as a ? silver bullet ? solution that will enable a host of new and advanced multimedia services seamlessly across both local and wide area networks . While it certainly appears likely that ATM will have a genuine impact on the future of business communications , a ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 2 major hurdle that needs to be overcome before this happens lies with the semantic gap that exists between the ATM technology development and marketing community and the prospective customer base which stands to benefit from the technology . Motivated by this observation , we have been developing an approach to marketing multimedia business communications services for several years . A major result of this effort was the creation of the Broadband Multimedia Applications Demonstration Suite -LRB- BMADS -RRB- ? a collection of integrated technologies and custom applications designed to make tangible the benefits of highspeed networks to potential end users of ATM technology -LRB- Nicol , 1995 -RRB- . Using BMADS , we are able to show customers scenarios that illustrate how distributed multimedia technology can be applied to different industries and across various business functions . Each scenario offers a concise problem statement through an explanation of a fictional company?s business practices , followed by a live demonstration of our multimedia software ? solution ? highlighting the key ATM technical features that make it possible . This paper builds on some of our experiences of building and using BMADS as a tool to explore effective applications of multimedia in the business domain , and to explain the potential impact of ATM technology to end users . We also describe how key features of ATM technology are directly assisting some of our latest multimedia applications-oriented research . The remainder of the paper is organized as follows . Section 2 briefly describes the ATM testbed we have been using locally to underpin our applications research , and the immediate impact the availability of the testbed had on the course of our research . Section 3 then offers a brief overview of BMADS , describing two of the applications comprising the suite . We also comment on the lessons learned from the experience of building and demonstrating the applications described . In Section 4 , we offer a brief overview of the BMADS software infrastructure required to support the concept applications described . From an engineering point of view , a key thrust of our research has been concerned with how best to exploit ATM technology for the support of sophisticated multimedia applications . With this concern in mind , Section 5 introduces and describes a set of primitives we have been developing based on ATM support for multicast switched virtual circuits -LRB- SVCs -RRB- . The set of primitives provide a flexible and efficient basis by which to transport and manipulate video streams over the network . Building on ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 3 that discussion , Section 6 then describes an enhanced connection management service built around our SVC primitives and a prototype desktop video-conferencing application we developed based on this service . Finally , in Section 7 , we present our conclusions . 2 . An ATM Testbed for Multimedia Applications Research Our research in the area of distributed multimedia applications has been underway since 1991 . Since our initial work predated the emergence of commercial broadband products , the first distributed multimedia applications we developed generally depended on the use of multiple network types to handle the requirements of different media . The original implementation of our Electronic Relocation Bureau service -LRB- Section 3.1 -RRB- , for example , was implemented using a hybrid network overlay arrangement comprising Ethernet for data , an ISDN simulator for voice , and a SONET network for video transport . This approach suffered from several drawbacks . Among these was the fact that dependence on multiple networks invariably led to ? clunky ? prototype implementations , i.e. , while the presentations were impressive , the engineering of the prototypes made it difficult for us to identify or generalize principles concerning how sophisticated applications ought to be built . A further practical limitation of this approach was that it effectively made it impossible for us to take our prototypes out of our laboratory environment for demonstration purposes elsewhere?this in turn meant that it was difficult for us to gauge the effectiveness of our application concepts or to solicit feedback from potential end-users of such services concerning ideas for improvement . We were able to overcome such practical difficulties in the spring of 1993 when , following the emergence of the first commercial ATM products , we assembled an ATM local area network testbed . Though the testbed has evolved considerably since its introduction , the original testbed comprised eight multimedia workstations -LRB- Sun Sparc 10/41 ? s -RRB- interconnected by a Fore Systems ASX-100 ATM switch . Each workstation was equipped with a Parallax XVideo card -LRB- a high-end JPEG video card -RRB- and an SBA-100 ATM adapter -LRB- featuring a raw transmission rate of 140 Mbits/sec -RRB- , in addition to various local multimedia I/O devices . As it happened , we were surprised by how well the ATM network supported the kinds of application prototypes we had been building . Much of our applications software ported to the ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 4 new testbed with little or no modification . We determined early on that by building on the primitives provided by Fore Systems ? ATM technology we would essentially need to build only two core software components : a component to provide reliable audio / video -LRB- A/V -RRB- transport over the native ATM adaptation layers ; and another to support a rudimentary connection management function to allow us to switch A/V steams between workstations ? on demand . ? -LRB- Further details of the implementation of these components are reported in by Phuah -LRB- 1994 -RRB- , and Sasnett -LRB- 1994 -RRB- . Indeed , with approximately six man-months of additional effort following the introduction of our testbed?the time it took us to design , implement , integrate , and test the new software?the suitability of ATM technology for the support of our multimedia applications had made it possible for us to give live demonstrations between the Fore Systems and Parallax Graphics booths at the Fall ? 93 Interop trade show in San Francisco . 3 . Broadband Multimedia Applications Demonstration Suite Remarkable advances in key enabling communications technologies have been clearly evident in recent years . Despite the undeniable promise of such developments , however , a major challenge facing the research community now lies with the demonstration of their suitability for the enhanced facilitation of computer-supported collaboration . Bearing witness to this claim is evidence of a host of activity in the area of multimedia collaborative research -LRB- e.g. , -LRB- Altenhofen , 1993 ; Anupam , 1993 ; Gajewska 1994 -RRB- -RRB- . As indicated above , our research in this area has focused on the development and use of BMADS . BMADS is modeled on the concept of a central presentation system , operating on the familiar slide-show metaphor -LRB- figure 1 -RRB- . The content is filled in by creating a new slide and then dragging and dropping text and images onto it . Associated with each demonstration are template page elements to help ensure that the demonstrations have a consistent style . The text item template supports highlighting behavior so paragraphs can be emphasized using bright color to help make a point or explain what the viewer is about to see . Since the entire presentation is essentially an AthenaMuse-driven ? meta-application ? -LRB- Hodges , 1993 ; Sasnett , 1994 -RRB- , a ? page ? can contain almost any kind of interactive feature or external program . We placed buttons on several pages to make a table of contents and launch relevant demonstrations that take over the screen but ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 5 relinquish control to the slide show when they exit . We even created some on-screen animation to make page-turning more dynamic . Figure 1 : BMADS slide show presentation format The remainder of this Section offers an overview of BMADS through discussion of our experiences of developing two business-oriented distributed multimedia service prototypes : an electronic relocation bureau and a telemedicine consultation application . As well as describing the prototype services , we offer insights into the circumstances that led to their creation and comment on some of the lessons we learned as a result of their use . 3.1 . Electronic Relocation Bureau The first of the BMADS applications we describe was based on the results of an internal task force rather than a study of customer needs . A diverse group of employees from all levels of GTE ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 6 was chartered to identify a dozen new services for residential customers . One of their recommendations was to investigate the potential of a multimedia real-estate shopping service for home subscribers so they could monitor the market and even attend a virtual ? open house ? without leaving home . We placed a twist on this idea to orient it more towards the business environment . We invented the concept of an electronic relocation bureau whose business is to help corporate employees find housing in a new community with the aid of advanced broadband network services . To make use of the service , the employee is given an account granting unlimited access to a menu of multimedia services from his desktop computer , allowing him to conduct searches whenever it is most convenient and least disruptive to the work environment . For many users , the first step will be to learn more about a remote city , including the character of its neighborhoods and suburbs . The main menu can launch an interactive video program giving an overview of the city and its patterns of development , including maps , aerial photos , and streetlevel views of selected areas . The next phase involves searching for candidate homes in promising areas , by tying into the remote community?s multiple listings database -LRB- figure 2 -RRB- . For our prototype , we use a small database created from local listing data . A query builder dialog box helps novice users build search terms . In addition to traditional boolean queries , the user can perform full-text information retrieval -LRB- using GTE?s FAIRS software -LRB- Chang , 1993 -RRB- -RRB- to search through descriptions of each property . Thus , for example , one can express interest in properties matching a description such as ? a green house with four bedrooms near a pond for under $ 250,000 . ? A customized listings booklet is constructed dynamically based on the return of the query . This contains the complete record for each house , including information from both databases , pictures , and in some cases motion video ? tours ? of the properties . Having completed a review of the real estate database , the user typically selects a small number of houses for further study . Remaining questions might concern demographics and geographics?commute times , proximity to schools and day care centers , and so on . ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 7 Figure 2 : Conducting a home search A button in the listing book interface for each house says ? Call the Realtor . ? When pressed , a business card appears on the screen describing the real estate agent for the current property . As shown in Figure 2 , a menu appears that lets the user set the parameters of the call : voice only , voice and video , or voice , video , and ? shared graphics ? -LRB- in which both parties see the same ? shared ? documents on screen at once -RRB- . The call is made with another button push -LRB- figure 3 -RRB- . In the shared-graphics mode , the application delivers the user-selected records to the realtor?s workstation ; the same booklet appears on both screens , complete with video illustrations . Either party may turn pages in the book . The realtor can bring up a shared spreadsheet calculator to make financial projections and share them with the customer . As each home is reviewed , the realtor can load the financials for that property into the spreadsheet which is instantly updated on each party?s screen . ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 8 Figure 3 : Electronic relocation bureau The relocation-bureau prototype proved an excellent vehicle by which to demonstrate to our customers the value-added potential of distributed multimedia technology . All our customers have been through the process of buying a home , so they were readily able to recognize the benefits of such a service?minimized house-hunting , shopping at leisure from the desktop , etc. . Through the process of being able to demonstrate this prototype to numerous customers with a broad range of backgrounds , we have been able to gather useful ideas and suggestions concerning possible variations of the same applications . For example , based on the observation that we already have the ? right ? support mechanisms in place , suggestions included plugging in other forms of domain-specific specific content to build services for marketing industrial realestate , for trading professional athletes between clubs , or for placing available professionals in new career positions . 3.2 . Telemedicine Consultation Service The second of the BMADS multimedia applications we describe focuses on the telemedicine domain -LRB- which , broadly speaking , concerns communication of and about medical information ? using distributed multimedia technology to break down time and distance barriers -RRB- . GTE has been ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 9 collaborating with medical researchers in North Carolina for several years on a project called VISTANet -LRB- Basch , 1993 -RRB- , which was one of seven high-speed networks funded as part of NREN -LRB- the National Research and Education Network -RRB- . One of our academic customers in North Carolina requested GTE Laboratories to consider how GTE?s high-speed networking expertise might be applied to interconnect doctors and researchers distributed throughout its school of medicine . Using medical information supplied by our customer , we created a scenario centered around a rural physician using a high-speed network and multimedia communications software to analyze the results of a coronary angiography and to consult with a remote colleague for a second opinion -LRB- Nicol , 1994 -RRB- . A coronary angiography procedure consists of injecting dye into a beating heart while a blackand-white video clip of several seconds duration is recorded . This allows the complex blood flows through the illuminated heart muscle to be seen in high relief over the course of several pumping cycles , until the dye begins to disperse . Experts then study these video clips in great detail , looking for telltale signs of partial or total obstructions in veins and arteries . The video frames were acquired directly from a digital camera and recorded onto the hard disk of an attached computer . Our customer supplied copies of these data files in TIFF format . We normalized the contrast range in the images to improve viewing , and created movie files in both 8 - bit uncompressed grayscale and 24-bit JPEG formats . We also created a ? difference ? movie that shows the variation between each frame in the original clip . These raw materials were then wrapped up into a typical usage scenario . A rural physician?s patient is showing symptoms of restricted heart functionality . He is sent to the medical center some 50 miles away for more extensive testing . The center has a digital angiography unit that records the patient 's test results as described above , and stores them in a large digital archive accessible to medical personnel throughout North Carolina , via a high-speed network . The patient?s own family doctor is able to review the results from his remote office as soon as they are available . ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 10 Figure 4 : Drag-and-drop telemedicine consulting user interface A simple drag-and-drop user interface allows the doctor to analyze the digital movies using a variety of tools -LRB- figure 4 -RRB- . The movies can be played in a ? loop viewer ? that repeats the clip over and over again at a user-controllable speed . The movies can also be stepped through a frame at a time , or scanned quickly with the aid of a scrollbar . Another viewing tool spreads the frames of the movie out on a large surface , allowing dozens of frames to be compared at the same time . These can be enlarged for detailed viewing with a simple mouse click . Another tool shows the movie in ? difference ? format in which only the changing parts of each image are highlighted . In the scenario , the family doctor places a multimedia call to the medical center to discuss the diagnosis with a staff specialist -LRB- figure 5 -RRB- . The call has two components ; an audiovisual conference using full-motion video and synchronized audio , and a shared document workspace . Both parties can control a viewer showing a movie of the test results . Either party can scroll to a particular frame and mark on it with colored overlay ? pens ? to highlight problem areas . Both parties share the same view of this document even as it is being modified . There is also a text window in which they can enter comments that can be included as part of the associated patient record . Such communication tools should help the specialists reach a consensus on diagnosis and ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 11 patient treatment without involving unnecessary travel for anyone involved . While the patient must initially still go to where the expensive test equipment resides , the information derived from those tests can be distributed and discussed much easier than before . Figure 5 : Telemedicine consultation In addition to providing an effective application scenario through which we could discuss with customers the application of multimedia applications technology to the telemedicine domain , this example allowed us to explore ATM technology?s potential to deal with the more stringent networking demands of certain telemedicine applications . Two immediate issues of concern to our customer related to the scenario described above were the cost of transporting such large data sets over a wide area network , and the speed with which they can be accessed . As part of our telemedicine consultation service prototype we therefore prepared a demonstration in which a remote image server delivers the uncompressed angiography movies in real time over our ATM LAN while a ? cost meter ? shows both the bandwidth consumed and a running-total of the estimated bill for the connection -LRB- figure 6 -RRB- . We based this aspect of the demonstration on a rough cost model of approximately $ 50 per gigacell . ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 12 Each frame is a 512x480 raster , with every pixel holding 8 bits -LRB- 256 levels -RRB- of grayscale image data . This amounts to 245,760 bytes -LRB- approximately 2 megabits -RRB- per frame . Since there are 30 frames per second , the maximum data rate for this stream is around 60 megabits per second . Based on our cost model , our cost meter indicated that the angiography data stream would cost approximately 0.7 cents per second in a continuous transmission for a typical consultation . Figure 6 : ATM cost model and bandwidth meter The demonstration also shows how the graphics throughput on the receiving host is a critical component limiting total end-to-end bandwidth . In most medical imaging applications , any type of ? lossy ? compression is undesirable . To our knowledge , no-one has yet been able to define what is an acceptable amount of lost information when life decisions rest on a successful diagnosis based on digital images . This has severe implications for the total bandwidth required by the network and the hosts connected to it . On our machines , we experience a ? slowdown ? on the order of 30 megabits per second due to the graphics processing required to move the image data onto the screen . When graphical output is shut off , the network and host interfaces are able to sustain the required 60 megabits per second . This observation served as a practical reminder of the fact that even a broadband network based on ATM technology offers only part of the end-to - ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 13 end solution . In this case it became abundantly clear that the workstation had once again become a significant performance bottleneck . 3.3 . BMADS Retrospective Though BMADS initially served as a container of ? concept service scenarios ? as described above , over time we have also began to incorporate more technical information into our interactive presentation environment -LRB- Nicol , 1995 -RRB- . The random-access nature of the medium allows us to skip over these parts for less sophisticated audiences , or to jump directly to them when making a point to a technical audience . Of particular relevance to the subject-matter of this paper , we created demonstrations that highlight some of the key technical advantages of ATM over competing network technologies . For example , users can participate in a two-way videoconference using different transport protocols -LRB- TCP , AAL-4 , AAL-5 -RRB- , JPEG compression factors , and window sizes , all while viewing the consequences on bandwidth consumption in real time . We also included modules that explain and illustrate the use of multicast connections by using a ? video wall ? display?viewers can seek to identify delays between the original stream and all of its copies . Perhaps the most important benefit of the demonstration system is that it provides a repository for all of our thinking and research results on the subject of multimedia applications , while readily accommodating future growth and revision . It has also encouraged us to produce research results that fit into the framework of an interactive visual presentation . As a result of this experience we are no longer content to write a test program to measure bandwidth and generate numbers ; we now recognize a need to create a multi-colored bar-graph visualization that interfaces with the test suite and displays results as they occur . 4 . BMADS Architecture and Implementation A principal technical challenge of creating the BMADS application service prototypes described in Section 3 lay with the design and implementation of a suitable software infrastructure . Indeed we have been building and refining such an infrastructure since 1991 . Key aspects of our approach have been to create a clean architecture comprising modular components , and to gain leverage as far as possible through the integration of technologies developed by research ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 14 coworkers . A further goal has been to take advantage of key technical developments as they emerge -LRB- such as the introduction of commercial ATM products and capabilities -RRB- . This Section offers a brief overview of the current BMADS architecture -LRB- figure 7 -RRB- and sets the scene for the discussion that follows in the remainder of the paper . BMADS Main Presentation AthenaMuse : Multimedia Authoring System Connection Mgt emx : application sharing pmsg : inter-appl messaging mvc primitives : audio/video I/O & transport vfs : movie fserver Galatea : Device Control X Window System ATM Network TCP/IP Applications & Demonstrations -LRB- includes cmvc video conferencing -RRB- tcl / tk environment Figure 7 : BMADS software architecture The custom software components comprising the BMADS infrastructure include the following : ? mvc primitives , a highly configurable set of streams management mechanisms that provide for the input , output , and reliable transport of digital audio and video using optimized ATM protocols or more traditional TCP/IP protocols . ? emx , an event multiplexer that allows applications with X Window System user interfaces to be displayed and controlled by multiple simultaneous users on a network . We created emx by extending shareware software we located to support video information . ? cm , a connection manager program that is responsible for establishment and termination of multimedia ? calls ? based on vc -LRB- Section 5.1 -RRB- between user workstations . ? pmsg , a simple messaging system designed to simplify the coordination of independent application components displayed on a user?s workstation ; ? vfs , a simple video file server based on low-level ATM protocols , providing frame-at-a-time retrieval of movie file information ; ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 15 ? Galatea , a networked video device control system developed at the MIT Media Lab , for remote-control operation of videodisc and videocassette players using a client/server paradigm -LRB- Appelbaum , 1990 -RRB- ; and ? AthenaMuse , the first authoring system to allow users to run interactive multimedia applications over a network connection ; used to create over thirty educational applications at MIT -LRB- Hodges , 1993 -RRB- as well as the user interfaces of most of the BMADS demonstrations -LRB- Nicol , 1995 -RRB- . The components highlighted in Figure 7 form the basis of the discussion that follows in Sections 5 and 6 . 5 . Enhanced Streams Management over ATM While BMADS has proved an effective means of demonstrating next-generation end-user services across various vertical market segments and for explaining the benefits of emerging broadband networking technologies , its development is essentially an ongoing process . As new ATM network capabilities and techniques emerge -LRB- Iwata , 1995 -RRB- ? whether as a result of active standardization work or of ad hoc vendor offerings?part of our challenge is to explore how we can translate such developments into enhanced applications support for end users . In this Section , we focus on recent work in which we have been attempting to exploit ATM?s multicast switched virtual circuits -LRB- SVCs -RRB- in such a manner . In particular , we show how this functionality has been used to develop an enhanced video transport primitive?mvc?capable of supporting flexible management of audio / video streams . We also discuss the creation of primitives based on mvc that allow manipulate video streams in a flexible manner . 5.1 . Requirement for Streams Management Commonly used transport and networking protocols such as TCP/IP , UDP/IP , and IPX/SPX were not designed to support the transfer of large amounts of time-sensitive data such as A/V streams . Hence , as part of our ongoing BMADS research effort we are interested in the development of new special-purpose protocols , capable of transferring time-sensitive data and exploiting the advantages of ATM technology as far as possible -LRB- Gutfreund , 1995 -RRB- . ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 16 Support for the A/V transport components of the BMADS applications was provided by a software tool we called vc . While vc successfully supported the class of applications described in Section 3 , due to its point-to-point nature it had the major shortcoming that it would not scale well to support applications involving N-way video-conferencing .1 Of late we have therefore been examining how to build on the multicast SVC capability of Fore Systems ? range of ATM switches as a more suitable basis for building efficient and flexible support for A/V streams management . ATM technology features some unique capabilities that make it well suited for the transport of multimedia data streams . Such capabilities include support for bandwidth reservation , scalability , and support of time-sensitive traffic . ATM is a connection-oriented networking technology that allows applications to establish connections in one of two ways : through permanent virtual circuits -LRB- PVCs -RRB- or switched virtual circuits -LRB- SVCs -RRB- . Connections based on PVCs are unfortunately difficult to scale since the application or network administrator must bear the responsibility for assigning and maintaining unique connection identifiers associated with all connections . Not surprisingly , network management becomes an increasingly difficult and time-consuming task as the number of live connections rise . By contrast , SVC connection identifiers are assigned and maintained by the switches in the network , thereby freeing the application or the network administrator from this arduous task . While not all commercially available ATM switches presently support SVCs , we believe such support will become common in the near future as relevant standards begin to gel . Fortunately , the Fore Systems ATM switch we are using as part of our local ATM testbed already supports SVCs -LRB- Fore , 1995 -RRB- . Another issue of interest from a network application perspective is the ability to multicast data . Several leading ATM switch vendors -LRB- including Fore Systems and Newbridge Network -RRB- provide hardware multicast support in their products . This capability reduces the network traffic and computing load on host workstations when data from the same source has to be transferred to multiple destinations . In a switched network in particular , it makes more sense for the switches or hubs that route the data to provide a mechanism for data multicasting , thereby reducing the computing resources required of the originating host computer for this purpose . That is , each 1 While multiple copies of vc can execute simultaneously to simulate N-way video conferencing , this approach would be likely to over-tax the computing resources of the workstations and network . ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 17 ? originating ? workstation has now only to handle the transmission of a single outgoing data stream regardless of how many hosts will eventually receive the data . This observation is especially true if the data being multicast comprises video data since this demands substantial network transmission bandwidth . While one could question what has been gained by off-loading the processing overhead needed to duplicate multicast data from host workstations to the network , it should be borne in mind that , by way of contrast to general-purpose workstations , switches and hubs are high-performance devices optimized for routing and managing network data . 5.2 . MVC?A Primitive for Reliable Multicast Streams Transport We now describe mvc?a primitive designed to combine ATM switch support for both SVCs and multicasting to provide a reliable and efficient tool for transporting A/V streams from an originating host to any number of receiver hosts -LRB- that support the Fore Systems ATM switch signaling protocol -RRB- . An mvc instantiation can operate in one of two modes : as a server or as a viewer . Options supplied at invocation time dictate which mode the mvc will adopt . In server mode , mvc serves as a video source originator?digitizing , compressing , packaging , and transmitting local A/V input over an assigned SVC . In viewer mode , mvc serves as a sink for incoming data from the assigned SVC and translates the stream into an appropriate format for local A/V playback . The primitive?s implementation takes advantage of the Parallax Graphics JPEG video hardware to perform video codec , compression and decompression operations . Operating in viewer mode on each receiving host , mvc reassembles and decompresses the incoming stream in readiness for local video playback . Establishment of multicast connections using mvc involves two steps : -LRB- I -RRB- invoke mvc in server mode on the sending host -LRB- the A/V source -RRB- ; and -LRB- ii -RRB- invoke mvc in viewer mode on a receiving host -LRB- an A/V sink -RRB- ; Step -LRB- ii -RRB- above can be repeated any number of times to introduce as many legs as required . Once an instance of mvc has been created in server mode , further instances can be invoked in viewer mode on any suitably equipped host connected to the ATM network that needs to ? tunein ? to an mvc server on a sending host . An important feature of mvc is that receiving hosts can tune-in to the mvc server at any time during the existence of the mvc server . To accomplish this , ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 18 the mvc viewer signals the mvc server -LRB- using a TCP/IP based connection -RRB- to request a SVC multicast connection . The mvc server then requests the switch to establish a multicast connection to the receiving host where the mvc viewer resides . Thereafter , the switch processes the incoming cells of the connection from the mvc server and duplicates these for transfer to the outgoing connection port -LRB- s -RRB- used by the mvc viewer process -LRB- es -RRB- . Switch mvc mvc mvc mvc Server Viewer -LRB- s -RRB- Figure 8 : ATM multicast-SVC connections based on mvc As illustrated by Figure 8 only one ATM connection exists from the mvc server host to the switch?regardless of the number of associated mvc viewer hosts . Note that the single switch in the figure can be viewed as a degenerate case of an ATM network : the switch could be replaced by an ATM network cloud -LRB- provided the ATM cloud supports PVC and SVC multicasting -RRB- . An mvc instance operating in viewer mode is able to synchronize with the start of the next available video frame from the incoming data stream . Because mvc makes direct use of ATM adaptation layers -LRB- AALs -RRB- for A/V transport , it was necessary to build in support for error recovery , i.e. , to account for situations where ATM cells are dropped or damaged during transmission through the network . Such support is particularly important when mvc is operating in viewer mode . When cell loss occurs due to switch buffer overflow , for example , data -LRB- video frames -RRB- arriving on the receiving host will be ? damaged . ? Consequently , steps have to be taken to identify and discard such data . To accomplish this , an ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 19 instance of mvc operating in server mode appends a signature to each A/V frame being transmitted . This signature allows an instance of mvc , operating in viewer mode , to ? resynch ? the video being displayed whenever a damaged video frame is detected . When a transmission error is detected through examination of an A/V frame , the mvc viewer simply reads to the next identifiable signature and continues processing from there . This rudimentary error-recover scheme works well because mvc deals only with A/V streams transmission , and because A/V applications can typically withstand the loss of video frames at the receiving end without suffering undue degradation . This aspect of mvc highlights one of the main reasons why protocols such as TCP are not well suited for transporting A/V streams : TCP guarantees the accurate transmission of a data-stream at the expense of high overhead for error checking and retransmissions . 5.3 . Enhanced MVC-based Streams Management Primitives We extended support for application-level video management based on mvc through the creation of two further primitives : mvcrec and mvcplay . mvcrec is a primitive developed to record video streams from an mvc instance operating in server mode . Because mvrec uses the same video stream protocol as mvc , its implementation is very similar to that of an mvc instance operating in viewer mode . The key difference between the two implementations is that mvcrec avoids the need for video decompression , simply storing the incoming video stream in a file -LRB- ready for play back when needed -RRB- , while mvc must perform the additional decompression processing before displaying the video in a window . Nevertheless mvcrec must take into account the arrival frame rate of the video stream since this may not occur at a constant rate , e.g. , due to network delays while the video is being transmitted between the sending and receiving hosts . To address this issue mvcrec adds a timestamp to each frame before storing it . This extra information is required when the video is played back so that the frame rate matches the rate at which it was recorded . The other main component included in our mvc-based set of video management primitives is mvcplay . It is used for playing back an A/V stream stored in a file , the contents of which was originally created by mvcrec . The function of mvcplay is very similar to that of an mvc instance operating in server mode . The principal difference is mvcplay does not have to perform video digitization or compression since it reads the video stream from a file directly . In the absence of ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 20 the overhead required to perform these two tasks , mvcplay could transmit video at a frame rate significantly higher than mvc . To prevent frame rate mismatch , mvcplay possesses a built-in mechanism to regulate the video-transmission rate , i.e. , to transmit the video at the same rate at which it was originally recorded . Switch mvcplay mvc mvc mvcrec Figure 9 : Video management enhancements based on mvc A further interesting feature of mvcplay is that an A/V stream being played back can be received by other users located at other workstations around the network . Since both mvcplay and mvc use the same A/V protocol for transmission , receiving hosts have no way of discerning whether the incoming video stream originates from a live or recorded source . This feature offers considerable flexibility . Figure 9 illustrates how mvcrec can be used to ? re-record ? a video stream originating from mvcplay while two other mvc viewers perform routine playback functions . Note that all these applications could be running on the same or different workstations . The ability to execute instances of the mvc-based primitives in various configurations is providing us with a useful basis by which to explore further novel multimedia applications concepts -LRB- see Section 6.4 -RRB- . 6 . MVC-based Connection Management This Section describes a general purpose N-way connection management service we constructed on top of the mvc video multicasting primitive . We also discuss conference-mvc -LRB- cmvc -RRB- , an N-way desktop video-conferencing application prototype we built on top of our connection management service . Our principal motivation for creating cmvc was to help gauge the effectiveness of the multimedia toolkit approach we have been taking to the job of ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 21 constructing multimedia applications . This approach involves the identification and construction of reusable and application domain-independent mechanisms that can combine to provide multimedia application authors with considerable development leverage -LRB- Sasnett , 1994 -RRB- . Ideally , this approach will lead to the creation of a toolkit that frees application authors from the problem of reinventing the support needed for each new multimedia application . Instead , they can concern themselves mainly with the application concepts and the creation and integration of domainspecific content . 6.1 . Requirement for a Generalized Connection Management Service Connection management is a key function required to support ? switched ? applications in general , i.e. , those in which a ? call ? can involve dynamically varying associations among different endpoints . As such , connection management is required to support a spectrum of applications , ranging from voice-oriented services such as those found in traditional telephony , to emerging applications enabled by the recent advent of broadband networks such as desktop videoconferencing . As indicated previously , following the installation of our ATM testbed , we gave priority to the construction of a connection management system during our early efforts to support BMADS . While the design of a platform consisting of reusable support mechanisms for multimedia applications has always been important to us , our initial connection management design lacked generality?specifically , it supported point-to-point connectivity between application users only . While the solution was sufficient for the purposes of demonstrating BMADS at trade shows and the like , we recently decided a more general purpose N-way connection management capability was required . At an early stage of our work with ATM technology we observed that hardware support for multicasting could provide a natural and efficient basis for building conference-based applications . That is , a general characteristic of such applications is that each participant generally needs to multicast information generated locally to all other participants of the conference?as well as to receive information multicast from the other participants . Putting theory to the test , we therefore set out to determine if we could provide a more general connection management service based on a the multicast primitive mvc . The basic idea was to determine if we could model an N-way call ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 22 as an overlay mesh of multicast connections . For example , a 3-way call could be modeled as three sets of multicast trees as illustrated in Figure 10 . A/V source A/V sink mvc multicast P1 P2 P3 Figure 10 : Achieving N-way calls via mvc-multicast overlays As described in Section 5.2 , mvc was developed to provide a mechanism by which to perform reliable multicasting of A/V streams over ATM networks . It provides a very efficient solution by mapping cleanly onto the hardware support for multicasting provided by our Fore Systems ? ASX - 100 ATM switch . Furthermore , the current implementation of the tool supports video multicasting based on SVCs which makes for a much more general and flexible solution over the previous PVC-based implementation . 6.2 . Connection Management Service Architecture One of the most successful aspects of the initial connection management service of BMADS was the insulation it provided applications from the complexities of the underlying network . The key to accomplishing this goal was to introduce an application agent to serve as an ? architectural place-holder ? in which to encapsulate network issues such as the choice of transport and signaling -LRB- e.g. , AAL-5 , AAL-4 , or TCP/IP -RRB- . We therefore set out to repeat this basic approach in the design of a new connection management service . This way , the end-user application ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 23 developer is able to program against a simplified application programming interface -LRB- API -RRB- and to enjoy all the usual benefits of having achieved a clean separation of concerns . Despite the drawbacks of introducing centralized elements into any distributed system -LRB- in terms of their implications for reduced reliability and scalability -RRB- , we decided that implementing the connection manager as a centralized component was satisfactory for our purposes . Aside from the ease of implementation it would afford , we believed such a solution would scale sufficiently well to meet the likely requirements of GTE?s Technology Solutions Center -LRB- TSC -RRB- Network in which we planned to deploy our software , and applications built on it .2 Furthermore , concerning the kinds of demonstrations we anticipated supporting within the TSC context , it would not be considered disastrous if the host executing the connection manager process occasionally failed or otherwise became unavailable . The resulting connection management architecture is illustrated in Figure 11 . In the design of the new architecture we pursued a further important separation of concerns by clearly delineating the shared responsibilities of the application agent and the connection manager itself . Specifically , we decided that the connection manager should be responsible only for maintaining state associated with active conferences -LRB- calls -RRB- . Correspondingly , the transport streams required to implement the multimedia conferences are managed by the application agents . All the information required by the application agents to establish these streams can be supplied by the connection manager through its API . This separation of concerns is significant in that the role of the connection manager remains conceptually simple and transport-independent . While the current application agent implementation uses only mvc to create the streams constituting legs of calls , we believe it would be possible to incorporate knowledge of how to deal with other kinds of video-transport mechanisms within the agents . Extending the implementation in this way would yield a testbed capable of interfacing to other architecture elements capable of supporting media type checking , but this is an issue for future work -LRB- Eliassen , 1996 -RRB- . 2 GTE?s TSC network currently comprises approximately a dozen centers dispersed across the United States . ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 24 Conn ection Manager App lica ti on Ag ent App lica ti on Ag ent App lica ti on Ag ent App lica ti on Ag ent Ap pli ca ti on Ap pl icat io nAp pli ca ti on Ap pl icat io n Figure 11 : Connection management service architecture 6.3 . Connection Management Service Application Programming Interface The API presented to the application agent by the connection manager is remarkably simple . The most significant calls comprising the API are as follows : JoinConf -LRB- conference_ID , member -RRB- - > status JoinConf is called by the application agent to create a new conference if no conference conference_ID is already known by the connection manager . Additionally , JoinConf is used to join an existing conference if conference_ID is already known by the connection manager . In both cases , member is an identifier for the participant joining the named conference . status indicates the outcome of the request . LeaveConf -LRB- conference_ID , member -RRB- - > status LeaveConf is called by the application agent on behalf of a participant -LRB- member -RRB- that wishes to leave an active conference -LRB- conference_ID -RRB- . In the event that member is the last participant of conference_ID , the connection manager deletes member and destroys the conference . ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 25 status returns either OK -LRB- the request succeeded -RRB- or one of several flags indicative of error conditions . ListConfs -LRB- -RRB- - > conference_list ListConfs requests the connection manager to return a list -LRB- conference_list -RRB- containing the names of all currently active conferences . ListMbrs -LRB- conference_ID -RRB- - > membership_list ListMbrs requests the connection manager to return a list -LRB- membership_list -RRB- containing the names of all participants of the conference conference_ID . 6.4 . Desktop Video-Conferencing Example As a means of testing the utility of the connection management service API described in Section 6.3 , and of the degree of leverage we could obtain from the ATM primitives the service was built on , we set out to construct a simple desktop video-conferencing application ? conference-mvc -LRB- or cmvc -RRB- . The user interface of the resulting application is quite simple as shown in Figure 12 . The application includes a control panel in which a list of active conferences registered with the Conference Manager displays in the ? CONFERENCES : ? box . Selecting any one of the conferences listed under ? Conferences : ? causes its current membership to be displayed in the ? Selected Conference Members : ? box . The buttons shown in the control panel invoke the corresponding API calls described in Section 6.3 . Whenever the membership of the currently selected conference changes , cmvc causes the user interface to be updated automatically . The cmvc user interface also controls the tiling arrangement of the video windows on the local host as members join and leave the conference associated with the host . The design and implementation of the connection management service and cmvc?all based on Fore Systems ? native support for multicast SVCs?required only several weeks of effort using approximately 1000 lines of tcl-tk code -LRB- Ousterhout , 1994 -RRB- . Through this effort we were able to demonstrate the effectiveness of mvc and the connection management service API as primitives for the construction of non-trivial multimedia applications . Needless to say , the effort also yielded a genuinely useful video-conferencing environment . ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 26 Figure 12 : User interface to cmvc We are now exploring the use of our mvcplay and mvcrec primitives as a basis by which to further enhance cmvc . Specifically , we are planning to introduce additional user controls to the cmvc user interface that will allow users to record video streams being received by other conference participants on demand -LRB- via local invocation of mvcrec -RRB- , as well as to transmit pre - ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 27 recorded video clips to them on demand -LRB- via local invocation of mvcplay -RRB- . Similar capabilities based on Internet Mbone technology are being explored elsewhere -LRB- Holfelder , 1995 -RRB- . We believe that such enhancements could add significant value to the classical ? talking heads ? conferencing application in the sense that A/V streams need no longer be restricted to applications in which they essentially serve as transient bit-streams . Rather , end users -LRB- or even autonomous agents -RRB- can now be given controls to support the generation , organization , and subsequent playback of video objects . Such support could provide an effective basis by which to support remote human interaction?specifically , conferences involving the establishment of any form of contractual agreement , or in which the generation of an audit-trail of communication is critical . A logical extension of this work is to consider how to generate visual representations of such conferences -LRB- Ginsberg , 1995 -RRB- . Finally , we are also examining how such support could be facilitated as an integral part of a network-based video library environment -LRB- Lin , 1996 -RRB- . 7 . Conclusions The emergence of broadband networking technologies such as ATM looks likely to have a profound impact on the future of information technology . Prior to their advent , the development and deployment of high-quality distributed multimedia business applications was not a commercially or technically viable proposition . While the rapid maturation of broadband technologies such as ATM is changing this situation quickly , there remains the formidable practical challenge of convincing potential end-users of the value of such technology as a means of streamlining real-world business communications processes . In this paper we discussed our approach to meeting this challenge through the development and deployment of BMADS?a rich suite of prototype multimedia business services constructed over a local ATM testbed . Specifically , we described two of the BMADS demonstrations -LRB- the electronic relocation bureau and telemedicine consultation services -RRB- and reported on some of the lessons learned from the exercise of constructing and demonstrating these over the past few years . BMADS has proved to be an extremely effective tool for tangibly demonstrating to end users the impact of broadband technology to business communications . BMADS is now in ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 28 regular use over GTE?s Technology Solutions Center network?a broadband corporate network interconnecting a host of high-technology ? solutions centers ? nation wide . As ATM technology matures , we are continuing to explore ways by which to take full advantage of the technology?s key features . In this context we also discussed recent endeavors to exploit Fore Systems ? support for multicast SVCs as a primitive for building general and efficient low-level support for desktop multimedia applications . We discussed in detail how we succeeded in translating such support into a stack of increasingly abstract services capable of providing multimedia application developers with effective implementation leverage . The stack comprised a set of primitives built on multicast SVCs on top of which we constructed a flexible connection management service which , in turn , allowed us to build a moderately sophisticated N-way videoconferencing application with minimal effort . We believe that the kind of leverage we were able to obtain by building directly on ATM support in this way will remain a key success factor in our ongoing efforts to roll out compelling multimedia business communications application prototypes . Acknowledgments We gratefully acknowledge the integral contribution made to the work described here by our former colleague Russell Sasnett -LRB- now with Microsoft Corporation -RRB- . Frank Eliassen -LRB- of Tromso University , Norway -RRB- contributed to our thoughts on how to architect support for the flexible management of media streams in an ATM network environment . In addition , Tom Wilkes proofread an earlier draft of this paper . References Altenhofen M. , Dittrich J. , Hammerschmidt R. , Kappner T. , Kruschel C. , Kuckes A. , & Steinig T. -LRB- 1993 -RRB- . The BERKOM Multimedia Collaboration Service . Proceedings of ACM Multimedia ? 93 , 457-463 . Anupam V. , & Bajaj C. , -LRB- 1993 -RRB- . Collaborative Multimedia Scientific Design in Shastra . Proceedings of ACM Multimedia ? 93 , 447-456 . Appelbaum D. A. , -LRB- 1990 -RRB- . The Galatea Network Device Control System . MIT Media Laboratory , Cambridge MA . ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 29 Basch B. , & Moolenbeek R. , -LRB- 1993 , November -RRB- . VISTANet Deployment and System Integration Experiences . Technical Memorandum TM-0666-11-93-361 , GTE Laboratories Incorporated , Waltham MA . Chang S. C. , Dedui H. , Azzam H. , & Du M-W. , -LRB- 1993 , March -RRB- . Multilevel Ranking in Large Text Collections using FAIRS . Proceedings of 1st Text Retrieval Conference -LRB- TREC-1 -RRB- , 329-336 . Eliassen F. , & Nicol J. R. , -LRB- 1996 -RRB- . Supporting Interoperation of Continuous Objects , to appear in Theory and Practice of Objects Systems -LRB- special issue on Distributed Object Management , Ed . Gail Mitchell -RRB- , John Wiley . ForeRunner ASX-200WG ATM Switch User 's Manual , -LRB- 1995 , November -RRB- . Fore Systems , Incorporated , Warrendale PA. -LRB- See also http://www.fore.com for online product information . -RRB- Gajewska H. , Kistler J. , Manasse M. , & Redell D. , -LRB- 1994 -RRB- . Argo : A System for Distributed Collaboration . Proceedings of ACM Multimedia ? 94 , 433-440 . Ginsberg A. , & Ahuka S. , -LRB- 1995 , November -RRB- . Automatic Envisionment of Virtual Meeting Room Histories . Proceedings of ACM Multimedia ? 95 , 65-75 . Gutfreund S. , Nicol J. R. , Phuah V. , & Eliassen F. , -LRB- 1994 , June -RRB- . ATOMS : ATM Support Mechanisms for Advanced Multimedia Applications Research . Technical Report TR-0297-6-95-380 , GTE Laboratories Incorporated , Waltham MA . Hodges M. , & Sasnett R. M. , -LRB- 1993 -RRB- . Multimedia Computing : Case Studies from MIT Project Athena , Addison-Wesley Publishers , ISBN 0-201-52029-X . Holfelder W. , -LRB- 1995 , November -RRB- . MBone VCR?Video Conference Recording on the Mbone . Proceedings of ACM Multimedia ? 95 , 237-238 . Iwata A. , Mori N. , Ikeda C. , Suzuki H. , & Ott M. , -LRB- 1995 , February -RRB- . ATM Connection and Traffic Management Schemes for Multimedia Internetworking . Communications of the ACM , 38 -LRB- 2 -RRB- , 72-89 . Lin C. , Ze Y. , & Guan S. U. , -LRB- 1996 , January -RRB- . The Design and Architecture of a Video Library System . IEEE Communications Magazine , 34 -LRB- 1 -RRB- , 86-91 . Nicol J. R. , Phuah V. , Sasnett R. , & Gutfreund S. , -LRB- 1994 , October -RRB- . An Experiment in ATM Support for Telemedicine . Proceedings of the 1st Annual Technical Conference on Telecommunications R&D in Massachusetts , Lowell MA . Nicol J. R. , Phuah V. , & Gutfreund S. , -LRB- 1995 , December -RRB- . Broadband Multimedia Applications Demonstration Suite?User Guide . Technical Report TR-0321-12-95-380 , GTE Laboratories Incorporated , Waltham MA . Ousterhout J. K. , -LRB- 1994 -RRB- . Tcl and the Tk Toolkit , Addison Wesley , ISBN 0-201-63337-X . ATM to the Desktop : Impacting Modern Business Communications with Broadband Technology GLaboratories 30 Phuah V. , Nicol J. R. , Sasnett R. , & Gutfreund S. , -LRB- 1994 , November -RRB- . Connection Management in Distributed Multimedia Business Applications . Proceedings of IEEE Symposium on Multimedia , Richardson TX . Sasnett R. , Nicol J. R. , Phuah V. , & Gutfreund S. , -LRB- 1994 , May -RRB- . Experiences of Developing Distributed Multimedia Business Applications . Proceedings of IEEE ? 94 International Conference on Multimedia Computing and Systems , Boston MA , 363-374 .

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O B I I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I I O O O O O O O O O O O O O O O O O O O