add interrupt functions