Unread count is completely broken with this, so I'm keeping it in its own branch until I fix it. Also code is a mess.