return actual errors instead of strings