implemented on, off, and handlers