Working implementation w/ disconnection handling