errors now return empty string per guidelines