added OnConnect, removed set
change observable to have a separate listener for each event; added some new events