public function addEdge( $sourceNode, $targetNode, $value = NULL )
	{
		if( $this->isEdge( $sourceNode, $targetNode ) )
		{
			$edge	= $this->getEdge( $sourceNode, $targetNode );
 			if( $value == $edge->getEdgeValue( $sourceNode, $targetNode ) )
				throw new InvalidArgumentException( 'Edge is already set.' );
			else
				$this->removeEdge( $sourceNode, $targetNode );
		}
		$newEdge = new ADT_Graph_Edge( $sourceNode, $targetNode, $value );
		$this->edges[] = $newEdge;
		return $newEdge;
	}