throw errors instead of returning undefined like an idiot