diff --git a/examples/GPIO/wiring.c b/examples/GPIO/wiring.c
index b8a71d386d41157970121845b7629d7b58a142f6..f852cd067b17ea88dbc502270505dc9ddb94d766 100644
--- a/examples/GPIO/wiring.c
+++ b/examples/GPIO/wiring.c
@@ -46,27 +46,10 @@ void portEnable(enum GPIOports port) {
 
 void pinMode(enum GPIOpins pin, enum GPIOpinMode mode) {
 	GPIO_TypeDef * GPIOx;
-	uint16_t PinOffset = 0;
+	uint16_t PinOffset;
 
-	if (pin <= pin_A7) {
-		GPIOx = GPIOA;
-		PinOffset = pin << 2;
-	}
-	else if (pin <= pin_B7) { /* GPIOB doesn't actually exist (yet?)
-		GPIOx = GPIOB;
-		PinOffset = (pin-8) << 2; */
-	}
-	else if (pin <= pin_C7) {
-		GPIOx = GPIOC;
-		PinOffset = (pin - 16) << 2;
-	}
-	else if (pin <= pin_D7) {
-		GPIOx = GPIOD;
-		PinOffset = (pin - 24) << 2;
-	}
-	else {
-		return;
-	}
+	GPIOx = GPIOA+(pin>>3);
+	PinOffset = (pin & 0x7)<<2;
 
 	GPIOx->CFGLR &= ~(0b1111<<PinOffset);							// zero the 4 configuration bits