throw errors instead of returning them