unwrap functions to support removeEventListener