Ground up refactor: part 1 - jchat.user package