got interupts working!
implement debouncing, and wait_for_edge, needs testing