diff --git a/src/main/java/com/ardublock/translator/block/output/ServoDefaultAttachBlock.java b/src/main/java/com/ardublock/translator/block/output/ServoDefaultAttachBlock.java
index 50cbeeda6fc43078ba5989d4db97acbbaf172dcd..b8ca45bac1b317db767922ecfb2f84975bf45528 100644
--- a/src/main/java/com/ardublock/translator/block/output/ServoDefaultAttachBlock.java
+++ b/src/main/java/com/ardublock/translator/block/output/ServoDefaultAttachBlock.java
@@ -6,7 +6,10 @@ import com.ardublock.translator.block.TranslatorBlock;
 import com.ardublock.translator.block.exception.BlockException;
 import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
+import com.ardublock.translator.block.numbers.ConstantNumberBlock;
+import com.ardublock.translator.block.numbers.LocalVariableNumberBlock;
 import com.ardublock.translator.block.numbers.NumberBlock;
+import com.ardublock.translator.block.numbers.VariableNumberBlock;
 
 public class ServoDefaultAttachBlock extends TranslatorBlock {
 
@@ -22,13 +25,22 @@ public class ServoDefaultAttachBlock extends TranslatorBlock {
 
 		String servoSpecs = "";
 
-		if (!( tb instanceof NumberBlock ) )
+		if (!( tb instanceof NumberBlock ) && !(tb instanceof VariableNumberBlock) && !(tb  instanceof LocalVariableNumberBlock) && !(tb instanceof ConstantNumberBlock)  )
 		{
-			throw new BlockException(this.blockId, "the Pin# of Servo must be a number");
+			throw new BlockException(this.blockId, "the Pin# of Servo must contain a number");
 		}
 		
 		String pinNumber = tb.toCode().replaceAll("\\s*_.new\\b\\s*", "");
-		String servoName = "servo_pin_" + pinNumber;
+		
+		int servoCounter = 1;
+		while(translator.containsServo("servo"+servoCounter)) {
+			servoCounter++;
+		}
+		
+		String servoName = 	"servo"+servoCounter;
+		translator.addServo("servo_"+pinNumber, servoName);
+		
+		//String servoName = "servo_pin_" + pinNumber;
 
 	//	tb = this.getRequiredTranslatorBlockAtSocket(1);
 
diff --git a/src/main/java/com/ardublock/translator/block/output/ServoDefaultBlock.java b/src/main/java/com/ardublock/translator/block/output/ServoDefaultBlock.java
index 09c8913db4f589b015b0d70b62d2a7216494d981..6256cf3994d6eeba4468dea5a196f59b2bd4b38c 100644
--- a/src/main/java/com/ardublock/translator/block/output/ServoDefaultBlock.java
+++ b/src/main/java/com/ardublock/translator/block/output/ServoDefaultBlock.java
@@ -7,6 +7,10 @@ import com.ardublock.translator.block.TranslatorBlock;
 import com.ardublock.translator.block.exception.BlockException;
 import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
+import com.ardublock.translator.block.numbers.ConstantNumberBlock;
+import com.ardublock.translator.block.numbers.LocalVariableNumberBlock;
+import com.ardublock.translator.block.numbers.NumberBlock;
+import com.ardublock.translator.block.numbers.VariableNumberBlock;
 
 public class ServoDefaultBlock extends TranslatorBlock {
 	
@@ -21,19 +25,29 @@ public class ServoDefaultBlock extends TranslatorBlock {
 	public String toCode() throws SocketNullException, SubroutineNotDeclaredException
 	{
 		TranslatorBlock tb = this.getRequiredTranslatorBlockAtSocket(0);
+		
+		if (!( tb instanceof NumberBlock ) && !(tb instanceof VariableNumberBlock) && !(tb  instanceof LocalVariableNumberBlock) && !(tb instanceof ConstantNumberBlock) )
+		{
+			throw new BlockException(this.blockId, "the Pin# of Servo must contain a number");
+		}
 
 		String servoSpecs = "";
 
 		String pinNumber = tb.toCode().replaceAll("\\s*_.new\\b\\s*", "");
 		
 		//****** Bit long w but easy to see what's happening. Any other invalid pins? *********
-		if ( ! ("2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32/"
+		/*if ( ! ("2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32/"
 				+ " 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53").contains(pinNumber.trim()) )
 		{
 			throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.Digital_pin_slot"));
-		}
+		}*/
 		
-		String servoName = "servo_pin_" + pinNumber;
+
+		String servoName = translator.getServo("servo_"+pinNumber);
+		if(servoName == null) {
+			throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.servo.none"));
+		}
+		//String servoName = "servo_pin_" + pinNumber;
 
 		tb = this.getRequiredTranslatorBlockAtSocket(1);
 
diff --git a/src/main/java/com/ardublock/translator/block/output/ServoDefaultDetachBlock.java b/src/main/java/com/ardublock/translator/block/output/ServoDefaultDetachBlock.java
index c4842d0ce7358837f52a46d16cdc59ed1c01c7e1..fb290935b4f4acdb2e7f4504cd2b44cebd742b50 100644
--- a/src/main/java/com/ardublock/translator/block/output/ServoDefaultDetachBlock.java
+++ b/src/main/java/com/ardublock/translator/block/output/ServoDefaultDetachBlock.java
@@ -1,14 +1,21 @@
 
 package com.ardublock.translator.block.output;
 
+import java.util.ResourceBundle;
+
 import com.ardublock.translator.Translator;
 import com.ardublock.translator.block.TranslatorBlock;
 import com.ardublock.translator.block.exception.BlockException;
 import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
+import com.ardublock.translator.block.numbers.ConstantNumberBlock;
+import com.ardublock.translator.block.numbers.LocalVariableNumberBlock;
 import com.ardublock.translator.block.numbers.NumberBlock;
+import com.ardublock.translator.block.numbers.VariableNumberBlock;
 
 public class ServoDefaultDetachBlock extends TranslatorBlock {
+	
+	private static ResourceBundle uiMessageBundle = ResourceBundle.getBundle("com/ardublock/block/ardublock");
 
 	public ServoDefaultDetachBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label)
 	{
@@ -22,13 +29,18 @@ public class ServoDefaultDetachBlock extends TranslatorBlock {
 
 		//String servoSpecs = "";
 
-		if (!( tb instanceof NumberBlock ) )
+		if (!( tb instanceof NumberBlock ) && !(tb instanceof VariableNumberBlock) && !(tb  instanceof LocalVariableNumberBlock) && !(tb instanceof ConstantNumberBlock) )
 		{
-			throw new BlockException(this.blockId, "the Pin# of Servo must be a number");
+			throw new BlockException(this.blockId, "the Pin# of Servo must contain a number");
 		}
 		
 		String pinNumber = tb.toCode().replaceAll("\\s*_.new\\b\\s*", "");
-		String servoName = "servo_pin_" + pinNumber;
+		
+		String servoName = translator.getServo("servo_"+pinNumber);
+		if(servoName == null) {
+			throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.servo.none"));
+		}
+		//String servoName = "servo_pin_" + pinNumber;
 
 	//	tb = this.getRequiredTranslatorBlockAtSocket(1);