 			}
 		}
 		
+		override public function draw():void {
+			color = getColor();
+			super.draw();
+		}
+		
+		protected function getColor():uint {
+			if (!port.getSource())
+				return 0xff0000;
+			
+			var value:Value = port.getValue();
+			if (value.unknown)
+				return 0xc219d9;
+			else if (value.unpowered)
+				return 0x1d19d9;
+			else
+				return 0x0;
+		}
+		
 		public function nearPoint(p:FlxPoint, radius:int = 0):Boolean {
 			return p.x + radius >= x && p.y + radius >= y && p.x - radius <= x + width && p.y - radius <= y + height;
 		}

	import Layouts.PortLayout;
	import org.flixel.FlxPoint;
	import org.flixel.FlxSprite;
	
	/**
	 * ...

			port = Layout.port;
			super();
			if (layout.vertical) {
				makeGraphic(3, U.GRID_DIM / 2, 0xffffffff);
				offset.x = width / 2;
			} else {
				makeGraphic(U.GRID_DIM / 2, 3, 0xffffffff);
				offset.y = height / 2;
			}
		}
