Basic Joining and Event Handler

read the diffs, it's quite plain