All features complete except Messaging.
I spent today trying to implement Messaging, then deleted it all and I'm about to start again. So if there's anything left over regarding Messaging in this commit, oops.