now raises exception on failure