add event by module

add event by module, move thrower, singleton to library