Rejigged to use computed properties everywhere it makes sense