change to interrupt approach