throw errors instead of strings