rewrite to be less full of fail.