diff --git a/src/main/java/com/ardublock/translator/block/operators/PidBlock.java b/src/main/java/com/ardublock/translator/block/operators/PidBlock.java
index 8fce63b60bef1d5e01772c9bc33a58dd18c87995..a3062964a6118a328242a35b2a73d70670aab6f4 100644
--- a/src/main/java/com/ardublock/translator/block/operators/PidBlock.java
+++ b/src/main/java/com/ardublock/translator/block/operators/PidBlock.java
@@ -1,7 +1,6 @@
 package com.ardublock.translator.block.operators;
 
 import java.util.ResourceBundle;
-import java.util.function.ToIntFunction;
 
 import com.ardublock.translator.Translator;
 import com.ardublock.translator.block.TranslatorBlock;
@@ -34,6 +33,7 @@ public class PidBlock extends TranslatorBlock
 		boolean derivative  = tb_kd != null;
 		boolean limited     = (tb_limitL != null) && (tb_limitH != null);
 		
+		//TODO: TEST CONTROLLER FUNCTIONALITY!!!!!!!
 		
 		//FUNCTION CODE ASSEMBLY
 		String functionCode = "int computePID(int input, int setpoint, long interval, int kp";
diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties
index 27c9c3bf957921b20c42b265cf4dcde7b544aca1..4649738ea521a99a3002f688452baaeb6f5403ab 100644
--- a/src/main/resources/com/ardublock/block/ardublock.properties
+++ b/src/main/resources/com/ardublock/block/ardublock.properties
@@ -457,6 +457,10 @@ bg.and=and
 bg.or=or
 bg.equal_digital===
 bg.not_equal_digital=!=
+bg.bit_and_poly=&
+bg.bit_or_poly=|
+bg.bit_xor_poly=^
+bg.bit_not_poly=~
 bg.bit_and=&
 bg.bit_or=|
 bg.bit_xor=^
@@ -464,6 +468,7 @@ bg.bit_not=~
 bg.bit_shift_left=<<
 bg.bit_shift_right=>>
 
+
 bg.greater.description=True if the first number is greater the second number
 bg.less.description=True if the first number is less then the second number
 bg.equal.description=True if the first number equals to the second number
@@ -477,6 +482,10 @@ bg.or.description=True if one or both of the two conditions are true.
 bg.not.description=The opposite of
 bg.equal_poly.description=True if first character is equal to the second character
 bg.not_equal_poly.description=True if first character is not equal to the second character
+bg.bit_and_poly.description=bitwise AND
+bg.bit_or_poly.description=bitwise OR
+bg.bit_xor_poly.description=bitwise XOR
+bg.bit_not_poly.description=bitwise NOT
 bg.bit_and.description=bitwise AND
 bg.bit_or.description=bitwise OR
 bg.bit_xor.description=bitwise XOR
diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml
index 6be7bd5d0c091d346a55ac8b074f1b67864be477..339c3d5486da3f2d2b32d3def19ea01e9d1a5048 100644
--- a/src/main/resources/com/ardublock/block/ardublock.xml
+++ b/src/main/resources/com/ardublock/block/ardublock.xml
@@ -1179,6 +1179,54 @@
 				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
 			</BlockConnectors>
 		</BlockGenus>
+		<BlockGenus name="bit_and_poly" kind="function" color="255 20 147" initlabel="bg.bit_and_poly">
+			<description>
+				<text></text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="string-list" connector-kind="plug" position-type="mirror" >					
+					<DefaultArg genus-name="dummy" label="" />
+				</BlockConnector>
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+			</BlockConnectors>
+		</BlockGenus>
+		<BlockGenus name="bit_or_poly" kind="function" color="255 20 147" initlabel="bg.bit_or_poly">
+			<description>
+				<text></text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="string-list" connector-kind="plug" position-type="mirror" >					
+					<DefaultArg genus-name="dummy" label="" />
+				</BlockConnector>
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+			</BlockConnectors>
+		</BlockGenus>
+		<BlockGenus name="bit_xor_poly" kind="function" color="255 20 147" initlabel="bg.bit_xor_poly">
+			<description>
+				<text></text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="string-list" connector-kind="plug" position-type="mirror" >					
+					<DefaultArg genus-name="dummy" label="" />
+				</BlockConnector>
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+			</BlockConnectors>
+		</BlockGenus>
+		<BlockGenus name="bit_not_poly" kind="function" color="255 20 147" initlabel="bg.bit_not_poly">
+			<description>
+				<text></text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="string-list" connector-kind="plug" position-type="mirror" >					
+					<DefaultArg genus-name="dummy" label="" />
+				</BlockConnector>
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+			</BlockConnectors>
+		</BlockGenus>
 		<BlockGenus name="bit_and" kind="function" color="255 20 147" initlabel="bg.bit_and">
 			<description>
 				<text></text>
@@ -3116,6 +3164,11 @@
 				
 				<BlockGenusMember>bit_shift_left</BlockGenusMember>
 				<BlockGenusMember>bit_shift_right</BlockGenusMember>
+				
+				<BlockGenusMember>bit_and_poly</BlockGenusMember>
+				<BlockGenusMember>bit_or_poly</BlockGenusMember>
+				<BlockGenusMember>bit_xor_poly</BlockGenusMember>
+				<BlockGenusMember>bit_not_poly</BlockGenusMember>
 			</BlockDrawer>
 			<BlockDrawer button-color="255 20 147" name="bd.logic" type="page">
 				<BlockGenusMember>logicDivider1</BlockGenusMember> 
diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties
index c74aa134b1c720e0d798307a53e01d0493cb77af..33bbb7922931d687a64e17f9f81382b07691e73f 100644
--- a/src/main/resources/com/ardublock/block/ardublock_de.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_de.properties
@@ -455,6 +455,10 @@ bg.and=UND
 bg.or=ODER
 bg.equal_digital===
 bg.not_equal_digital=!=
+bg.bit_and_poly=&
+bg.bit_or_poly=|
+bg.bit_xor_poly=^
+bg.bit_not_poly=~
 bg.bit_and=&
 bg.bit_or=|
 bg.bit_xor=^
@@ -475,6 +479,10 @@ bg.or.description=WAHR, wenn eine oder beide Bedingungen erf
 bg.not.description= Das Gegenteil von (z.B. WAHR wird zu FALSCH)
 bg.equal_poly.description=WAHR wenn die zwei Zeichen identisch sind
 bg.not_equal_poly.description=WAHR wenn die zwei Zeichen NICHT identisch sind
+bg.bit_and_poly.description=bitweises UND
+bg.bit_or_poly.description=bitweises ODER
+bg.bit_xor_poly.description=bitweises XOR
+bg.bit_not_poly.description=bitweises NICHT
 bg.bit_and.description=bitweises UND
 bg.bit_or.description=bitweises ODER
 bg.bit_xor.description=bitweises EXCLUSIV-ODER
diff --git a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
index b403f4162ae3fb446cb7f7a1a845ec8e4e564224..80189ecde1f3da08d0354f738bcdc25f5711263f 100644
--- a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
@@ -456,6 +456,10 @@ bg.and=&& (AND)
 bg.or=|| (OR)
 bg.equal_digital===
 bg.not_equal_digital=!=
+bg.bit_and_poly=&
+bg.bit_or_poly=|
+bg.bit_xor_poly=^
+bg.bit_not_poly=~
 bg.bit_and=&
 bg.bit_or=|
 bg.bit_xor=^
@@ -476,6 +480,10 @@ bg.or.description=ODER - WAHR, wenn eine oder beide Bedingungen erf
 bg.not.description=NICHT - Das Gegenteil von (z.B. WAHR wird zu FALSCH)
 bg.equal_poly.description=WAHR wenn die zwei Zeichen identisch sind
 bg.not_equal_poly.description=WAHR wenn die zwei Zeichen NICHT identisch sind
+bg.bit_and_poly.description=bitweises UND
+bg.bit_or_poly.description=bitweises ODER
+bg.bit_xor_poly.description=bitweises XOR
+bg.bit_not_poly.description=bitweises NICHT
 bg.bit_and.description=bitweises UND
 bg.bit_or.description=bitweises ODER
 bg.bit_xor.description=bitweises EXCLUSIV-ODER
diff --git a/src/main/resources/com/ardublock/block/block-mapping.properties b/src/main/resources/com/ardublock/block/block-mapping.properties
index 3707487a5c2d749304800134b59c9078700f13d9..a09aed523ab6ffac0e2800f7a190370eda5a2b77 100644
--- a/src/main/resources/com/ardublock/block/block-mapping.properties
+++ b/src/main/resources/com/ardublock/block/block-mapping.properties
@@ -138,6 +138,10 @@ greater_equal=com.ardublock.translator.block.logic.GreaterEqualBlock
 less_equal=com.ardublock.translator.block.logic.LessEqualBlock
 not_equal=com.ardublock.translator.block.logic.NotEqualBlock
 equal=com.ardublock.translator.block.logic.EqualBlock
+bit_and_poly=com.ardublock.translator.block.logic.BitAndBlock
+bit_or_poly=com.ardublock.translator.block.logic.BitOrBlock
+bit_xor_poly=com.ardublock.translator.block.logic.BitXorBlock
+bit_not_poly=com.ardublock.translator.block.logic.BitNotBlock
 bit_and=com.ardublock.translator.block.logic.BitAndBlock
 bit_or=com.ardublock.translator.block.logic.BitOrBlock
 bit_xor=com.ardublock.translator.block.logic.BitXorBlock