external lib for event