Refactor needs_new? methods