public function setAddress( MShop_Order_Item_Base_Address_Interface $address,
		$domain = MShop_Order_Item_Base_Address_Abstract::TYPE_PAYMENT )
	{
		if ( isset( $this->_addresses[ $domain ] ) && $this->_addresses[ $domain ] === $address ) { return; }

		$this->_notifyListeners( 'setAddress.before', $address );

		// enforce that the type is the same as the given one
		$address->setType( $domain );

		$this->_addresses[$domain] = clone $address;
		$this->_modified = true;

		$this->_notifyListeners( 'setAddress.after', $address );

		return $this->_addresses[$domain];
	}