reimplementing error messages