the present invention is applicable to an arbitrary mesh network . for concreteness , however , the present invention is described below in the context of particular exemplary networks . [ 0024 ] fig1 shows a portion of an optical network 100 comprising six nodes a , b , c , d , e , and f and eight links ( ab ), ( af ), ( bc ), ( bf ), ( cd ), ( cf ), ( de ), and ( ef ). each node is configured with an optical cross - connect ( oxc ), which performs the node &# 39 ; s signal add / drop / continue functions , and a fault monitoring unit ( fmu ), which is responsible for fault detection and service restoration processing for the node . in network 100 , the demand ( a , d ) refers to the transmission of optical signals ( also referred to as the payload ) from start node a to end node d . in the example of fig1 the service path for the demand ( a , d ) is the path ( abcd ), corresponding to transmission of the payload from start node a through intermediate node b through intermediate node c to end node d . in addition to the service path , one or more restoration paths are determined for each demand as backup paths in case of a failure in the service path . different types of failures are possible . one type of failure corresponds to a single wavelength when , for example , a particular laser fails , where the other wavelengths on the affected fiber are still operative . another type of failure corresponds to a single fiber when , for example , a particular fiber is cut , where the other fibers in the affected link are still operative . yet another type of failure corresponds to an entire link when , for example , a particular multi - fiber cable is cut , where the other links in the network are still operative . depending on the type of failure , different types of restoration are possible . for example , when a particular wavelength fails , restoration may be provided by another wavelength in the same fiber , by another fiber in the same link , or by one or more other links in the network . similarly , when a particular fiber fails , restoration may be provided by another fiber in the same link or by one or more other links in the network . and when a particular link fails , restoration may be provided by one or more other links in the network . for any type of failure , when restoration is provided by one or more other links in the network , the restoration may be path - based or link - based . in path - based restoration , the restoration path is independent of where along the service path the failure occurs . in link - based restoration , the restoration path may be different depending on the particular link in which the failure occurs . consider , for example , service path ( abcd ) of fig1 . under path - based restoration , the restoration path for service path ( abcd ) is the path ( afed ) no matter whether the failure occurs in link ( ab ), ( bc ), or ( cd ). under link - based restoration , however , the restoration path may be different depending on the particular link in which the failure occurs . for example , the restoration path for a failure in link ( ab ) of service path ( abcd ) may be the path ( afbcd ), the restoration path for a failure in link ( bc ) may be the path ( abfcd ), and the restoration path for a failure in link ( dc ) may be the path ( abcfed ). in general , for path - based restoration , each service path has a single restoration path , while , for link - based restoration , each service path may have one or more restoration paths , where failures in different links along the service path may have different restoration paths . although the present invention may be implemented in the context of either path - based restoration or link - based restoration , path - based restoration is preferred , because there is no need to identify the particular link in the service path in which a failure occurs . in general , the determination of restoration paths can be made prior to or after the occurrence of a failure . in order to accelerate restoration processing , in preferred embodiments of the present invention , the restoration paths are pre - computed and relevant information is stored in a database at each node . for the present invention , path computation may be centralized or distributed , although centralized path computation is preferred . in centralized path computation , a centralized network server is responsible for determining the service and restoration paths for all existing network demands , where the network server is responsible for communicating information about those paths to the appropriate nodes . in distributed path computation , each node performs analogous path computation processing in a distributed manner to determine the service and restoration paths for each demand . in general , the signaling used to convey restoration and auto provisioning information between the network server and individual nodes and between the nodes themselves may be transmitted using either in - band or out - of - band channels , where the out - of - band signaling may be implemented using either electrical or optical signals . for example , the signaling may be implemented using out - of - band electrical or optical signaling relying on a socket - based tcp / ip protocol . [ 0032 ] fig1 illustrates the distributed mesh restoration and auto provisioning protocol , according to one embodiment of the present invention . in this example , the service path for the demand ( a , d ) is the path ( abcd ) and the pre - computed restoration path is the path ( afed ). a distributed network operating system ( dnos ), running on each node , handles all network management including provisioning and restoration , using a separate thread for each demand . during system initialization , the dnos at each node reads from its database the pre - computed service and restoration paths and all link and port mapping information indicating which links and wavelengths are available for communication to neighboring nodes over which port numbers . for each demand supported by a node , the node &# 39 ; s database contains at least the following information : whether the node is the startnode , the endnode , or an intermediatenode for the demand . note that , for path - based restoration , the same two nodes will be the startnode and the endnode for both the service and restoration paths , but a node will be an intermediatenode for either only the service path or only the restoration path . the nextnode for each of the service and restoration paths ( when the node is the startnode for the demand ), the nextnode and the previousnode ( when the node is an intermediatenode for the demand ), or the previousnode for each of the service and restoration paths ( when the node is the endnode for the demand ). the input and output ports to be used for the demand . note that the output port for the startnode for the demand will differ for the service and restoration paths corresponding to the two different nextnodes for those two paths . similarly , the input port for the endnode for the demand will differ for the service and restoration paths corresponding to the two different previousnodes for those two paths . each node in network 100 of fig1 is configured to perform the following processing to initially provision a service path : when a node is the startnode for a particular demand , the node &# 39 ; s dnos initiates provisioning of the service path for that demand by sending a special provision message mtpr to its nextnode along the service path for the demand . in addition , the dnos configures its cross - connect based on the input and output ports designated for that service path . when a node &# 39 ; s dnos receives an mtpr message for a particular demand from another node , the dnos determines whether it is an intermediatenode or the endnode for that demand . if it is an intermediatenode , then the dnos passes the mtpr message to its nextnode along the service path for the demand . in either case , the dnos configures its cross - connect based on the input and output ports designated for that service path . [ 0039 ] fig2 shows a flow diagram of exemplary processing implemented to provision the service path ( abcd ) in network 100 of fig1 for the demand ( a , d ). in particular , the startnode ( node a ) initiates the provisioning of service path ( abcd ) for the demand ( a , d ) by sending an mtpr message to its nextnode ( node b ) along the service path ( abcd ) for the demand ( a , d ) ( step 202 in fig2 ) and configures its cross - connect based on the input and output ports ( corresponding to link ( ab )) designated in its database for the service path ( abcd ) ( step 204 ). when the dnos at node b receives the mtpr message for the demand ( a , d ) from node a , the dnos determines that it is an intermediatenode for that demand ( step 206 ). the dnos passes the mtpr message to its nextnode ( node c ) along the service path ( abcd ) for the demand ( a , d ) ( step 208 ) and configures its cross - connect based on the input and output ports ( corresponding to links ( ab ) and ( bc )) designated in its database for that service path ( step 210 ). when the dnos at node c receives the mtpr message for the demand ( a , d ) from node b , the dnos determines that it is an intermediatenode for that demand ( step 212 ). the dnos passes the mtpr message to its nextnode ( node d ) along the service path ( abcd ) for the demand ( a , d ) ( step 214 ) and configures its cross - connect based on the input and output ports ( corresponding to links ( bc ) and ( cd )) designated in its database for that service path ( step 216 ). when the dnos at node d receives the mtpr message for the demand ( a , d ) from node c , the dnos determines that it is the endnode for that demand ( step 218 ). the dnos configures its cross - connect based on the input and output ports ( corresponding to link ( cd )) designated in its database for that service path ( step 220 ). as indicated in fig2 the different nodes along the service path configure their cross - connects in parallel , with each node performing its own cross - connects without waiting for any other node . after all of the cross - connects are made in all of the nodes , the service path ( abcd ) is configured to satisfy the demand ( a , d ) ( step 222 ). note that , for typical network operations , in addition to the unidirectional demand ( a , d ), a corresponding unidirectional demand ( d , a ) will also be desired to provide bidirectional communications between nodes a and d . the provisioning of the service path for the demand ( d , a ) is implemented using provisioning processing analogous to that shown in fig2 for the demand ( a , d ). note that the service path for the demand ( d , a ) may , but does not have to , involve the same links and nodes as the service path for the demand ( a , d ) ( and likewise for the restoration paths for the demands ( a , d ) and ( d , a )). each node in network 100 is also configured to perform the following fault detection and auto provisioning processing : when a fault is detected by a node &# 39 ; s fault monitoring unit , the fmu sends a special internal fault message mtfault to the node &# 39 ; s dnos . as described earlier , a fault may correspond to a single wavelength , a single fiber , or an entire link . for purposes of this discussion , the fault will be assumed to correspond to a single wavelength ( and therefore to a single demand ) and restoration is assumed to be path - based . the principles involved can also be extended to path - based restoration of fiber and link faults . when a node &# 39 ; s dnos receives an mtfault message from its own fmu , the dnos determines whether it is an intermediatenode or the endnode along the service path for the demand . if the node is an intermediatenode along the service path for the demand , the dnos transmits an out - of - band mtfault1 message on to its nextnode along the service path for the demand . if the node is the endnode for the demand , the dnos passes a special restoration message mtrestore to its previousnode along the restoration path for the demand . in that case , the dnos also proceeds to reconfigure its cross - connect from the input port for the service path to the input port designated in its database for the restoration path for the demand . when a node &# 39 ; s dnos receives an mtfault1 message for a particular demand from another node , the dnos determines whether it is an intermediatenode or the endnode along the service path for the demand . if the node is an intermediatenode along the service path for the demand , then the dnos passes the mtfault1 message on to its nextnode along the service path for that demand . if the node is the endnode for the demand , then the dnos passes an mtrestore message to its previousnode along the restoration path for the demand . in that case , the dnos also proceeds to reconfigure its cross - connect from the input port for the service path to the input port designated in its database for the restoration path for that demand . when a node &# 39 ; s dnos receives an mtrestore message for a particular demand from another node , the dnos determines whether it is an intermediatenode or the startnode along the restoration path for the demand . if the node is an intermediatenode along the restoration path for the demand , then the dnos passes the mtrestore message to its previousnode along the restoration path for the demand . in that case , the dnos also proceeds to configure its cross - connect for the input and output ports designated in its database for the demand . if the node is the startnode for the demand , then the dnos reconfigures its cross - connect from the output port for the service path to the output port designated in its database for the restoration path for the demand . [ 0050 ] fig3 shows a flow diagram of exemplary processing implemented when a failure occurs in the link ( bc ) along the service path ( abcd ) in network 100 of fig1 corresponding to the wavelength used by the link ( bc ) for the demand ( a , d ). in particular , the fmu at node c will detect the failure and transmit an mtfault message to the dnos at node c ( step 302 ). when the dnos at node c receives the mtfault message from its own fmu , the dnos determines that it is an intermediatenode along the service path ( abcd ) for the demand ( a , d ) ( step 304 ). the dnos at node c transmits an mtfault1 message on to its nextnode ( node d ) along the service path ( abcd ) for the demand ( a , d ) ( step 306 ) and proceeds to remove its cross - connect for the demand ( a , d ) ( step 308 ). when the dnos at node d receives the mtfault1 message for the demand ( a , d ) from node c , the dnos determines that it is the endnode along the service path ( abcd ) for that demand ( step 310 ). the dnos passes an mtrestore message to its previousnode ( node e ) along the restoration path ( afed ) for the demand ( a , d ) ( step 312 ) and reconfigures its cross - connect from the input port ( corresponding to link ( cd )) for the service path ( abcd ) to the input port ( corresponding to link ( ed )) designated in its database for the restoration path ( afed ) for that demand ( step 314 ). when the dnos at node e receives the mtrestore message for the demand ( a , d ) from node d , the dnos determines that it is an intermediatenode along the restoration path ( afed ) for that demand ( step 316 ). the dnos passes the mtrestore message to its previousnode ( node f ) along the restoration path ( afed ) for that demand ( step 318 ) and configures its cross - connect for the input and output ports ( corresponding to links ( fe ) and ( ed )) designated in its database for that demand ( step 320 ). similarly , when the dnos at node f receives the mtrestore message for the demand ( a , d ) from node e , the dnos determines that it is an intermediatenode along the restoration path ( afed ) for that demand ( step 322 ). the dnos passes the mtrestore message to its previousnode ( node a ) along the restoration path ( afed ) for that demand ( step 324 ) and configures its cross - connect for the input and output ports ( corresponding to links ( af ) and ( fe )) designated in its database for that demand ( step 326 ). when the dnos at node a receives the mtrestore message for the demand ( a , d ) from node f , the dnos determines that it is the startnode for that demand ( step 328 ) and the dnos reconfigures its cross - connect from the output port ( corresponding to link ( ab )) for the service path ( abcd ) to the output port ( corresponding to link ( af ) designated in its database for the restoration path ( afed ) for that demand ( step 330 ). as in the case of service path provisioning , during auto provisioning , as indicated in fig3 each node along the restoration path configures its cross - connect in parallel without waiting for any other nodes . after all of the cross - connects are made in all of the nodes , the restoration path ( afed ) is configured to satisfy the demand ( a , d ) ( step 332 ). once the restoration path begins to satisfy the demand , that restoration path can be considered to be the new service path and the centralized network server can proceed to compute a new restoration path for the new service path in light of the current ( diminished ) network capacity . note that , as described earlier , for typical network operations , in addition to the unidirectional demand ( a , d ), the network will also be provisioned with a corresponding unidirectional demand ( d , a ) to provide bidirectional communications between nodes a and d . as noted above , the service path for the demand ( d , a ) may or may not involve the same links and nodes as the service path for the corresponding demand ( a , d ). even if the service path for the demand ( d , a ) does involve the same links and nodes as the service path for the demand ( a , d ) ( i . e ., the service path for the demand ( d , a ) is ( dcba )), the failure in the link ( bc ) that affects the service path ( abcd ) for the demand ( a , d ) may or may not affect the service path ( dcba ) for the demand ( d , a ), depending on the type of failure that occurs . if the failure in the link ( bc ) does affect the service path ( dcba ), then the failure will be detected by node b for the demand ( d , a ) ( in addition to node c detecting the failure for the demand ( a , d )) and analogous processing will be performed to provision the network for the restoration path for the demand ( d , a ), which may or may not be the path ( defa ). in general , both the initial service path provisioning processing and the fault detection and restoration path auto provisioning processing are handled independently for each unidirectional demand . [ 0057 ] fig4 shows a wdm optical network 400 comprising four nodes 1 - 4 and five bidirectional links . network 400 was constructed to investigate the performance of the distributed mesh restoration technique of the present invention . links ( 12 ), ( 14 ), ( 23 ), and ( 34 ) are based on the wavestar ™ 400g optical line system , which supports 80 wavelengths , and link ( 24 ) is based on a wavestarm 40 g optical line system , which supports 16 wavelengths , both of lucent technologies inc . of murray hill , n . j . the topology of network 400 supports up to 12 different unidirectional 2 . 5 gb / s demands corresponding to the six different combinations of pairs of nodes in network 400 . both heuristic and exhaustive graph - searching algorithms were used to determine the additional channel capacity required for restoration for each link under the assumption of a failure of a single wavelength in a single link . as shown in fig4 links ( 12 ), ( 14 ), ( 23 ), and ( 34 ) require three channels ( i . e ., wavelengths ) each in each direction , while link ( 24 ) requires two channels in each direction . table i shows the pre - computed service and restoration paths for six different unidirectional demands , evaluated under the constraints of node and link disjointness and minimum additional capacity . the four optical cross - connects that were used for this investigation ( two ( 11 × 11 ) oxcs for nodes 2 and 4 and two ( 9 × 9 ) oxcs for nodes 1 and 3 ) were obtained by partitioning a partially provisioned ( 128 × 128 ) mems ( micro - electro - mechanical system ) oxc prototype whose switching time is about 5 ms . a total of 40 input and 40 output ports were used in this investigation . table i demand service path restoration path ( 1 , 2 ) ( 12 ) ( 142 ) ( 1 , 3 ) ( 143 ) ( 123 ) ( 1 , 4 ) ( 14 ) ( 124 ) ( 2 , 3 ) ( 23 ) ( 243 ) ( 2 , 4 ) ( 24 ) ( 214 ) ( 3 , 4 ) ( 34 ) ( 324 ) [ 0060 ] fig5 shows a block diagram of the system architecture for node 1 of network 400 of fig4 . each of the other three nodes of network 400 have an analogous architecture . at the heart of node 1 is optical cross - connect ( oxc ) 502 , which operates under control of distributed network operating system ( dnos ) 506 via oxc nem ( network element manager ) 504 . oxc 502 is configured to two input olss ( optical line systems ) 508 and 510 , each of which has an optical amplifier 512 configured to an optical demultiplexer 514 , which is configured to three input optical translator units ( otus ) 516 . oxc 502 is also configured to two output olss 518 and 520 , each of which has three output otus 522 configured to an optical multiplexer 524 , which is configured to an optical amplifier 526 . the two input olss 508 and 510 are configured to an input ols nem 528 , which controls the input olss , and the two output olss 518 and 520 are configured to an output ols nem 530 , which controls the output olss . in addition , oxc 502 is configured to a transmitter 532 and a receiver 534 , which handle the communications with the local customers of node 1 . in particular , transmitter 532 transmits signals received from node 1 &# 39 ; s local customers to oxc 502 and receiver 534 receives signals from oxc 502 for node 1 &# 39 ; s local customers . as indicated in fig4 node 1 is configured to communicate with both nodes 2 and 4 . as shown in fig5 to enable these communications , input ols 508 is configured to receive incoming optical signals from node 2 , input ols 510 is configured to receive incoming optical signals from node 4 , output ols 518 is configured to transmit outgoing optical signals to node 2 , and output ols 520 is configured to transmit outgoing optical signals to node 4 . out - of - band signaling between dnos 506 and node 4 is handled via channel 536 , while out - of - band signaling between dnos 506 and node 2 is handled via channel 538 , where channels 536 and 538 are 10 / 100base - t ethernet signaling channels . in particular , wdm signals from nodes 2 and 4 are amplified by amplifiers 512 , demultiplexed by demuxes 514 , regenerated by the corresponding input otus 516 , and passed to oxc 502 . the outgoing optical signals from oxc 502 are passed to output otus 522 , multiplexed by muxes 524 , amplified by amplifiers 526 , and transmitted to nodes 2 and 4 . the input and output otus provide sonet 3 r signal regeneration , wavelength translation , and performance monitoring . each otu performs fault detection processing by monitoring its optical signals to detect a loss - of - signal condition corresponding to a failure in the corresponding channel . when a failure occurs on a particular channel , the corresponding input otu detects the fault , and the node &# 39 ; s fmu detects a corresponding voltage change at the input otu and transmits an mtfault message to dnos 506 . in one implementation , each input otu performs fault detection processing by tapping off a portion of its incoming optical signal , converting it to an electrical signal ( e . g ., using a photodiode ), and measuring the voltage level of the electrical signal . an los condition is determined when the voltage level falls below a specified threshold level . in another implementation , the electrical signal is decoded , for example , using a clock and data recovery ( cdr ) circuit with an los detector performing the fault detection processing . those skilled in the art will understand that analogous fault detection processing could be implemented in the output otus , either in addition to or instead of the processing in the input otus . upon receipt of an mtfault message from an input otu , dnos 506 accesses its database to determine the appropriate action for the failed service path . if the node is an intermediatenode for the failed service path , then dnos 506 transmits an mtfault1 message to its nextnode along the service path via the corresponding out - of - band signaling channel . if the node is the endnode for the failed service path , then dnos 506 transmits an mtrestore message to its previousnode along the corresponding restoration path for the demand via the corresponding out - of - band signaling channel . in the case of an intermediatenode , in addition to reporting los to dnos 506 , even though the otu does not receive a valid signal , nevertheless , it transmits a valid signal ( having no data ) to its nextnode , where , in the case of sonet signals , the otu injects an ais ( alarm indication signal ) into the sonet payload . as such , there are two different ways in which an intermediatenode or the endnode along a service path can detect an upstream failure in the service path : ( 1 ) each input otu monitors its incoming optical signal for an los condition , indicating a failure in its immediate upstream link ; and ( 2 ) the dnos monitors out - of - band signaling for an mtfault1 message , indicating that a failure occurred upstream of its immediate upstream link . depending on the implementation , an upstream failure may also be detected by monitoring an incoming optical signal for an ais condition , indicating that a failure occurred upstream of its immediate upstream link . depending on the number of nodes between the upstream node that originally detected the fault and a particular downstream node , fault detection at the downstream node may occur faster when an ais condition is extracted by the otu hardware than by the dnos software monitoring the out - of - band channel for an mtfault1 message . referring again to fig4 for purpose of the investigation , a fault was simulated by a mechanical switch on link ( 14 ) on the channel used by the demand ( 1 , 3 ). fig6 shows a time line of the sequence of events that occur following such a fault . in fig6 payload transmission between nodes is indicated by a wavy arrow , out - of - band signaling between nodes is indicated by a broken arrow , and processing within a node is indicated by a horizontal solid arrow . prior to the fault , in accordance with table i , the demand ( 1 , 3 ) was satisfied by provisioning the service path ( 143 ). the fault occurs on link ( 14 ) at time t = 0 ms . the corresponding otu at node 4 detects the los condition , injects ais into the payload transmitted to node 3 , and transmits an mtfault message to its dnos at node 4 . after receiving the mtfault message from its otu , the dnos at node 4 ( an intermediatenode along the service path ( 143 ) for the demand ( 1 , 3 )) transmits an mtfault1 message to its nextnode node 3 . the dnos at node 3 ( the endnode for the demand ( 1 , 3 )) receives the out - of - band mtfault1 message from node 4 , which triggers the initiation of restoration processing within node 3 . in particular , node 3 transmits an out - of - band mtrestore message to its previousnode node 2 and proceeds to reconfigure its oxc for the restoration path ( 123 ). node 2 ( an intermediatenode along the restoration path ( 123 ) for the demand ( 1 , 3 )) receives the mitrestore message from node 3 , passes the out - of - band mtrestore message to its previousnode node 1 , and proceeds to configure its oxc for the restoration path ( 123 ). node 1 ( the startnode for the demand ( 1 , 3 )) receives the out - of - band mtrestore message from node 2 and proceeds to reconfigure its oxc for the restoration path ( 123 ). when the configuration of all of the oxcs for the restoration path ( 123 ) is complete , the restoration path is provisioned to satisfy the demand ( 1 , 3 ) and the destination ( node 3 ) begins to receive restored signal service by time t & lt ; 50 ms . [ 0075 ] fig7 shows the configurations of network 400 of fig4 for the demand ( 1 , 3 ) both before and after the failure detection and restoration processing of fig6 . prior to the fault , input port 2 of the ( 9 × 9 ) oxc at node 1 is configured to output port 6 , input port 111 of the ( 11 × 11 ) oxc at node 4 is configured to output port 6 , and input port 6 at the ( 9 × 9 ) oxc at node 3 is configured to output port 2 , which in combination provide the service path ( 143 ). after the fault occurs in the link ( 14 ) and after restoration processing is complete , input port 2 of the ( 9 × 9 ) oxc at node 1 is reconfigured to output port 7 , input port 9 of the ( 11 × 11 ) oxc at node 2 is configured to output port 8 , and input port 9 at the ( 9 × 9 ) oxc at node 3 is reconfigured to output port 2 , which in combination provide the restoration path ( 123 ). a sonet test set was used to measure the duration of service disruption between fault and restoration of service . a 2 9 - 1 pseudo random bit sequence encapsulated within sonet was transmitted between various nodes . no bit errors were observed before or after the restoration event . the total mean restoration time was measured to be 41 ± 1 ms . although the investigation was based on a four - node mesh network , the total restoration time is expected to stay below 100 ms for large - scale wdm mesh networks . although the present invention has been described in the context of sonet - based wdm mesh networks having all - optical switches , those skilled in the art will understand that the present invention can be implemented for other networks , including networks based on data protocols other than sonet , networks based on multiplexing schemes other than wdm , such as time - division multiplexing ( tdm ), networks having architectures other than mesh architectures , such as ring architectures , and networks other than those having all - optical switches , such as networks having cross - connects that operate in the electrical domain . the present invention may be implemented as circuit - based processes , including possible implementation on a single integrated circuit . as would be apparent to one skilled in the art , various functions of circuit elements may also be implemented as processing steps in a software program . such software may be employed in , for example , a digital signal processor , micro - controller , or general - purpose computer . the present invention can be embodied in the form of methods and apparatuses for practicing those methods . the present invention can also be embodied in the form of program code embodied in tangible media , such as floppy diskettes , cd - roms , hard drives , or any other machine - readable storage medium , wherein , when the program code is loaded into and executed by a machine , such as a computer , the machine becomes an apparatus for practicing the invention . the present invention can also be embodied in the form of program code , for example , whether stored in a storage medium , loaded into and / or executed by a machine , or transmitted over some transmission medium or carrier , such as over electrical wiring or cabling , through fiber optics , or via electromagnetic radiation , wherein , when the program code is loaded into and executed by a machine , such as a computer , the machine becomes an apparatus for practicing the invention . when implemented on a general - purpose processor , the program code segments combine with the processor to provide a unique device that operates analogously to specific logic circuits . it will be further understood that various changes in the details , materials , and arrangements of the parts which have been described and illustrated in order to explain the nature of this invention may be made by those skilled in the art without departing from the scope of the invention as expressed in the following claims .