loads of useful assertion functions