diff --git a/src/main/java/com/ardublock/translator/block/communication/SoftSerialAvailableBlock.java b/src/main/java/com/ardublock/translator/block/communication/SoftSerialAvailableBlock.java
index 069806c29d74bcc4ebdcce4ef15213d657e98951..98df7ac0309a5e6cf07dc315038103b343263564 100644
--- a/src/main/java/com/ardublock/translator/block/communication/SoftSerialAvailableBlock.java
+++ b/src/main/java/com/ardublock/translator/block/communication/SoftSerialAvailableBlock.java
@@ -19,13 +19,24 @@ public class SoftSerialAvailableBlock extends TranslatorBlock
 		
 		TranslatorBlock tB1 = this.getRequiredTranslatorBlockAtSocket(0);//Pin Rx
 		TranslatorBlock tB2 = this.getRequiredTranslatorBlockAtSocket(1);//Pin Tx
-		String SerialNumber = tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "");
-	
-		if(!translator.containsSetupCommand("softSerial"+SerialNumber+".begin")){
-			translator.addSetupCommand("softSerial"+SerialNumber+".begin(4800);");
-			translator.addDefinitionCommand("SoftwareSerial softSerial"+SerialNumber+"(" + tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + ", "+ tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "") +");\n");
+		//String SerialNumber = tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "");
+		
+		String SerialName = label.trim();
+		if(SerialName.contains(" ")) {
+			SerialName = SerialName.substring(0, SerialName.indexOf(" "));
+		}
+		
+		/*if(!translator.containsSetupCommand("softSerial"+SerialNumber+".begin")){
+		translator.addSetupCommand("softSerial"+SerialNumber+".begin(4800);");
+		translator.addDefinitionCommand("SoftwareSerial softSerial"+SerialNumber+"(" + tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + ", "+ tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "") +");\n");
+		}*/
+		
+		if(!translator.containsSetupCommand(SerialName+".begin")){
+			translator.addSetupCommand(SerialName+".begin(4800);");
+			translator.addDefinitionCommand("SoftwareSerial "+SerialName+"(" + tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + ", "+ tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "") +");\n");
 		}
 		
-		return "softSerial"+SerialNumber+".available()";
+		//return "softSerial"+SerialNumber+".available()";
+		return SerialName+".available()";
 	}
 }
diff --git a/src/main/java/com/ardublock/translator/block/communication/SoftSerialBeginBlock.java b/src/main/java/com/ardublock/translator/block/communication/SoftSerialBeginBlock.java
index 15ef2aa91d586fb97ac2eb98e34df626b480ac73..4bd1c90255c11579a5cfd85f42dd2d49e34dca4d 100644
--- a/src/main/java/com/ardublock/translator/block/communication/SoftSerialBeginBlock.java
+++ b/src/main/java/com/ardublock/translator/block/communication/SoftSerialBeginBlock.java
@@ -23,10 +23,18 @@ public class SoftSerialBeginBlock extends TranslatorBlock
 		TranslatorBlock tB1 = this.getRequiredTranslatorBlockAtSocket(0);//Pin Rx
 		TranslatorBlock tB2 = this.getRequiredTranslatorBlockAtSocket(1);//Pin Tx
 		TranslatorBlock tB3 = this.getRequiredTranslatorBlockAtSocket(2);//Baud
-		String SerialNumber = tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "");
+		//String SerialNumber = tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "");
 		
-		translator.addDefinitionCommand("SoftwareSerial softSerial"+SerialNumber+"(" + tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + ", "+ tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "") +");\n");
-		translator.addSetupCommand("softSerial"+SerialNumber+".begin("+tB3.toCode().replaceAll("\\s*_.new\\b\\s*", "")+");");
+		String SerialName = label.trim();
+		if(SerialName.contains(" ")) {
+			SerialName = SerialName.substring(0, SerialName.indexOf(" "));
+		}
+		
+		//translator.addDefinitionCommand("SoftwareSerial softSerial"+SerialNumber+"(" + tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + ", "+ tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "") +");\n");
+		//translator.addSetupCommand("softSerial"+SerialNumber+".begin("+tB3.toCode().replaceAll("\\s*_.new\\b\\s*", "")+");");
+		
+		translator.addDefinitionCommand("SoftwareSerial "+SerialName+"(" + tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + ", "+ tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "") +");\n");
+		translator.addSetupCommand(SerialName+".begin("+tB3.toCode().replaceAll("\\s*_.new\\b\\s*", "")+");");
 		
 		return "";
 	}
diff --git a/src/main/java/com/ardublock/translator/block/communication/SoftSerialPrintBlock.java b/src/main/java/com/ardublock/translator/block/communication/SoftSerialPrintBlock.java
index ec19ffb72f5487bbb48e71c37d37e1d5e43e2b4d..baceebf17c859d34e16f7aef489529e5e9530c7a 100644
--- a/src/main/java/com/ardublock/translator/block/communication/SoftSerialPrintBlock.java
+++ b/src/main/java/com/ardublock/translator/block/communication/SoftSerialPrintBlock.java
@@ -25,14 +25,25 @@ public class SoftSerialPrintBlock extends TranslatorBlock
 		
 		TranslatorBlock tB1 = this.getRequiredTranslatorBlockAtSocket(0);//Pin Rx
 		TranslatorBlock tB2 = this.getRequiredTranslatorBlockAtSocket(1);//Pin Tx
-		String SerialNumber = tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "");
+		//String SerialNumber = tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "");
 		
 		TranslatorBlock tB3 = this.getRequiredTranslatorBlockAtSocket(2);//,"softSerial"+tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "")+".print(",");\n");//Code
 		TranslatorBlock tB4 = this.getRequiredTranslatorBlockAtSocket(3);//newLine?
 		
-		if(!translator.containsSetupCommand("softSerial"+SerialNumber+".begin")){
+		String SerialName = label.trim();
+		if(SerialName.contains(" ")) {
+			SerialName = SerialName.substring(0, SerialName.indexOf(" "));
+		}
+		
+		
+		/*if(!translator.containsSetupCommand("softSerial"+SerialNumber+".begin")){
 			translator.addSetupCommand("softSerial"+SerialNumber+".begin(4800);");
 			translator.addDefinitionCommand("SoftwareSerial softSerial"+SerialNumber+"(" + tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + ", "+ tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "") +");\n");
+		}*/
+		
+		if(!translator.containsSetupCommand(SerialName+".begin")){
+			translator.addSetupCommand(SerialName+".begin(4800);");
+			translator.addDefinitionCommand("SoftwareSerial "+SerialName+"(" + tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + ", "+ tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "") +");\n");
 		}
 		
 		String stringInput = tB3.toCode();
@@ -40,13 +51,15 @@ public class SoftSerialPrintBlock extends TranslatorBlock
 		
 		for(int i = 0; i < stringParts.length; i += 1){
 			stringParts[i] += " ";// SPACE added at the end of every part
-			ret += "softSerial"+SerialNumber+".print(" + stringParts[i] +  ");\n"; 
+			//ret += "softSerial"+SerialNumber+".print(" + stringParts[i] +  ");\n";
+			ret += SerialName+".print(" + stringParts[i] +  ");\n"; 
 		}
 
 		String newLine = tB4.toCode().replaceAll("\\s*_.new\\b\\s*", "");
 		
 		if(newLine.equals("true")||newLine.equals("HIGH")){
-		    ret += "softSerial"+SerialNumber+".println();\n";	
+		    //ret += "softSerial"+SerialNumber+".println();\n";
+		    ret += SerialName+".println();\n";	
 		}
 
 		return ret;
diff --git a/src/main/java/com/ardublock/translator/block/communication/SoftSerialReadBlock.java b/src/main/java/com/ardublock/translator/block/communication/SoftSerialReadBlock.java
index b2bdfd38f457a50e63febba739de91bcff23b99e..3b57744d686b693b35e25e968392d2d8335605f7 100644
--- a/src/main/java/com/ardublock/translator/block/communication/SoftSerialReadBlock.java
+++ b/src/main/java/com/ardublock/translator/block/communication/SoftSerialReadBlock.java
@@ -22,14 +22,25 @@ public class SoftSerialReadBlock extends TranslatorBlock
 		
 		TranslatorBlock tB1 = this.getRequiredTranslatorBlockAtSocket(0);//Pin Rx
 		TranslatorBlock tB2 = this.getRequiredTranslatorBlockAtSocket(1);//Pin Tx
-		String SerialNumber = tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "");
+		//String SerialNumber = tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "");
 		
-		if(!translator.containsSetupCommand("softSerial"+SerialNumber+".begin")){
+		String SerialName = label.trim();
+		if(SerialName.contains(" ")) {
+			SerialName = SerialName.substring(0, SerialName.indexOf(" "));
+		}
+		
+		/*if(!translator.containsSetupCommand("softSerial"+SerialNumber+".begin")){
 			translator.addSetupCommand("softSerial"+SerialNumber+".begin(4800);");
 			translator.addDefinitionCommand("SoftwareSerial softSerial"+SerialNumber+"(" + tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + ", "+ tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "") +");\n");
+		}*/
+		
+		if(!translator.containsSetupCommand(SerialName+".begin")){
+			translator.addSetupCommand(SerialName+".begin(4800);");
+			translator.addDefinitionCommand("SoftwareSerial "+SerialName+"(" + tB1.toCode().replaceAll("\\s*_.new\\b\\s*", "") + ", "+ tB2.toCode().replaceAll("\\s*_.new\\b\\s*", "") +");\n");
 		}
 		
-		String ret = "softSerial"+SerialNumber+".read()";
+		//String ret = "softSerial"+SerialNumber+".read()";
+		String ret = SerialName+".read()";
 		
 		return codePrefix+ret+codeSuffix;
 	}
diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml
index ed462928a35c69d20d3344c42ad582522dc4df65..20118081cc23491cf4e1f0832bad11849b7c7b85 100644
--- a/src/main/resources/com/ardublock/block/ardublock.xml
+++ b/src/main/resources/com/ardublock/block/ardublock.xml
@@ -2431,7 +2431,7 @@
 				</BlockConnector>
 			</BlockConnectors>
 		</BlockGenus>
-		<BlockGenus name="soft_serial_print" kind="command" color="165 42 42"	initlabel="bg.soft_serial_print">
+		<BlockGenus name="soft_serial_print" kind="command" color="165 42 42"	initlabel="bg.soft_serial_print" editable-label="yes">
 					<description>
 						<text>send message via Serial port</text>
 					</description>
@@ -2450,7 +2450,7 @@
 						</BlockConnector>
 					</BlockConnectors>
 		</BlockGenus>
-		<BlockGenus name="soft_serial_begin" kind="command" color="165 42 42"	initlabel="bg.soft_serial_print">
+		<BlockGenus name="soft_serial_begin" kind="command" color="165 42 42"	initlabel="bg.soft_serial_print" editable-label="yes">
 			<description>
 				<text>send message via Serial port</text>
 			</description>
@@ -2466,7 +2466,7 @@
 				</BlockConnector>
 			</BlockConnectors>
 		</BlockGenus>		
-		<BlockGenus name="soft_serial_read" kind="data" color="165 42 42" initlabel="bg.soft_serial_read">
+		<BlockGenus name="soft_serial_read" kind="data" color="165 42 42" initlabel="bg.soft_serial_read" editable-label="yes">
 			<BlockConnectors>
 				<BlockConnector connector-type="string-list" connector-kind="plug"  />
 				<BlockConnector connector-type="number"	connector-kind="socket" label="bc.rx_pin_number">
@@ -2477,7 +2477,7 @@
 				</BlockConnector>
 			</BlockConnectors>
 		</BlockGenus>
-		<BlockGenus name="soft_serial_available" kind="data" color="165 42 42" initlabel="bg.soft_serial_available">
+		<BlockGenus name="soft_serial_available" kind="data" color="165 42 42" initlabel="bg.soft_serial_available" editable-label="yes">
 			<BlockConnectors>
 				<BlockConnector connector-type="boolean" connector-kind="plug" />
 				<BlockConnector connector-type="number"	connector-kind="socket" label="bc.rx_pin_number">