add interrupt
add marco and counter enum