Move more checks into mutator hooks