public TopToRight()
			{
				this.PipeTopToRight = new Pipe.TopToRight();

				this.PipeTopToRight.Container.AttachTo(this.Container);

				// if the animation has already been started or even if its already
				// complete this action should not be called again.

				this.SupportedOutput.Right = SupportedOutputMarker;
				this.Input.Top =
					delegate
					{
						Animate(this.PipeTopToRight.Water, this.Output.RaiseRight);
					};

				this.SupportedOutput.Top = SupportedOutputMarker;
				this.Input.Right =
					delegate
					{
						Animate(this.PipeTopToRight.Water.Reverse(), this.Output.RaiseTop);
					};

			
				this.PipeParts = new Pipe[]
				{
					this.PipeTopToRight
				};
			}
			public LeftToBottom()
			{
				this.PipeLeftToBottom = new Pipe.LeftToBottom();

				this.PipeLeftToBottom.Container.AttachTo(this.Container);

				// if the animation has already been started or even if its already
				// complete this action should not be called again.

				this.SupportedOutput.Bottom = SupportedOutputMarker;
				this.Input.Left =
					delegate
					{
						Animate(this.PipeLeftToBottom.Water, this.Output.RaiseBottom);
					};

				this.SupportedOutput.Left = SupportedOutputMarker;
				this.Input.Bottom =
					delegate
					{
						Animate(this.PipeLeftToBottom.Water.Reverse(), this.Output.RaiseLeft);
					};


				this.PipeParts = new Pipe[]
				{
					this.PipeLeftToBottom
				};
			
			}