Removes magical parameter madness. All require* can throw All ensure* need a default value and never throw