Separate client and server views for availability

~~Continuing the cleanup of client and server code...~~

~~This will get added to as I work through the modules one at a time, but merge it whenever and I'll raise new PRs.~~

Will leave this as a standalone PR, because the jobs after this one get big enough to be their own PR.