User realtime

did a bunch of clean up at the same time, still needs a little DRY work but it seems good to go.
for #39