implemented chats, give or take