Do the hard work to give more precise error