diff --git a/Source/Processors/DataThreads/DataThread.cpp b/Source/Processors/DataThreads/DataThread.cpp
index 870c5b84bac8337cad53a6b7ad173f1358517324..b1e0aa4a1d0f32fff27cd9c2a0bc4f95ec7eeb98 100755
--- a/Source/Processors/DataThreads/DataThread.cpp
+++ b/Source/Processors/DataThreads/DataThread.cpp
@@ -69,6 +69,12 @@ DataBuffer* DataThread::getBufferAddress()
     return dataBuffer;
 }
 
+void DataThread::getChannelInfo(Array<ChannelCustomInfo>& infoArray)
+{
+	infoArray.clear();
+	infoArray.addArray(channelInfo);
+}
+
 
 void DataThread::updateChannels()
 {
diff --git a/Source/Processors/DataThreads/DataThread.h b/Source/Processors/DataThreads/DataThread.h
index 453b714fbd94678a98177d9da85d1987f2df7bcb..5e016c875420962b8949fdde191cd40a73b4378a 100755
--- a/Source/Processors/DataThreads/DataThread.h
+++ b/Source/Processors/DataThreads/DataThread.h
@@ -138,6 +138,7 @@ public:
         return 0;
     }
 
+	void getChannelInfo(Array<ChannelCustomInfo>& infoArray);
 
 protected:
 	virtual void setDefaultChannelNames()
diff --git a/Source/Processors/SourceNode/SourceNode.cpp b/Source/Processors/SourceNode/SourceNode.cpp
index d8c568fc957d14c5953a0f5a81d4d1ab304ec4c7..a3b034d822bc783397abb00ffbcb62362a164c9f 100755
--- a/Source/Processors/SourceNode/SourceNode.cpp
+++ b/Source/Processors/SourceNode/SourceNode.cpp
@@ -438,21 +438,18 @@ void SourceNode::process(AudioSampleBuffer& buffer,
 void SourceNode::saveCustomParametersToXml(XmlElement* parentElement)
 {
 
-    StringArray names;
-    Array<ChannelType> types;
-    Array<int> stream;
-    Array<int> originalChannelNumber;
-    Array<float> gains;
- //   getChannelsInfo(names, types, stream, originalChannelNumber, gains);
-	XmlElement *channelInfo = parentElement->createNewChildElement("CHANNEL_INFO");
-	for (int i = 0; i < names.size(); i++)
+	XmlElement *channelXml = parentElement->createNewChildElement("CHANNEL_INFO");
+	if (dataThread->usesCustomNames())
 	{
-		XmlElement* chan = channelInfo->createNewChildElement("CHANNEL");
-		chan->setAttribute("name",names[i]);
-		chan->setAttribute("stream",stream[i]);
-		chan->setAttribute("number",originalChannelNumber[i]);
-		chan->setAttribute("type",(int)types[i]);
-		chan->setAttribute("gain",gains[i]);
+		Array<ChannelCustomInfo> channelInfo;
+		dataThread->getChannelInfo(channelInfo);
+		for (int i = 0; i < channelInfo.size(); i++)
+		{
+			XmlElement* chan = channelXml->createNewChildElement("CHANNEL");
+			chan->setAttribute("name", channelInfo[i].name);
+			chan->setAttribute("number", i);
+			chan->setAttribute("gain", channelInfo[i].gain);
+		}
 	}
 
 }
@@ -471,12 +468,10 @@ void SourceNode::loadCustomParametersFromXml()
 				forEachXmlChildElementWithTagName(*xmlNode,chan,"CHANNEL")
 				{
 					String name = chan->getStringAttribute("name");
-					int stream = chan->getIntAttribute("stream");
 					int number = chan->getIntAttribute("number");
-					ChannelType type = static_cast<ChannelType>(chan->getIntAttribute("type"));
 					float gain = chan->getDoubleAttribute("gain");
-//					modifyChannelName(type,stream,number,name,false);
-//					modifyChannelGain(stream,number,type,gain,false);					
+					dataThread->modifyChannelGain(number, gain);
+					dataThread->modifyChannelName(number, name);
 				}
             }
         }