refactor
fix recursion call
refactor gpio
interrupt is done