diff --git a/finitetr.cpp b/finitetr.cpp
index a69487a496717b7204b995ae77f5550a2ed0e965..2572744956b3a5357b47c0a3492bca73a085d42c 100644
--- a/finitetr.cpp
+++ b/finitetr.cpp
@@ -26,6 +26,7 @@ FiniteTransmitionline::FiniteTransmitionline(fvalue c, fvalue r, unsigned int n)
 
 FiniteTransmitionline::FiniteTransmitionline(std::string paramStr)
 {
+
 	std::vector<std::string> tokens = tokenize(paramStr, ',');
 	if(tokens.size() < paramCount())
 	{
@@ -33,6 +34,8 @@ FiniteTransmitionline::FiniteTransmitionline(std::string paramStr)
 		_C = 1e-6;
 		_R = 1000;
 		_n = 4;
+		if(subComponant)
+				delete subComponant;
 		subComponant = createTransmitionLine(_C, _R, _n);
 		return;
 	}
@@ -43,6 +46,8 @@ FiniteTransmitionline::FiniteTransmitionline(std::string paramStr)
 			_R = std::stod(tokens[0]);
 			_C = std::stod(tokens[1]);
 			_n = std::stod(tokens[2]);
+			if(subComponant)
+				delete subComponant;
 			subComponant = createTransmitionLine(_C, _R, _n);
 		}
 		catch(const std::invalid_argument& ia)
@@ -58,6 +63,8 @@ FiniteTransmitionline::FiniteTransmitionline(const FiniteTransmitionline& in)
 	_R = in._R;
 	_C = in._C;
 	_n = in._n;
+	if(subComponant)
+		delete subComponant;
 	subComponant = createTransmitionLine(_C, _R, _n);
 }
 
@@ -98,6 +105,10 @@ void FiniteTransmitionline::setParam(const std::vector<fvalue>& param)
 	}
 
 	_n = param[2];
+
+	if(subComponant)
+		delete subComponant;
+	subComponant = createTransmitionLine(_C, _R, _n);
 }
 
 char FiniteTransmitionline::getComponantChar() const