implement GPIOs