add modes with interrupt service routines