Abstract event manager

sharing event manager API
Shouldn't the names here change Socket<>Connection