reorder conditional and check respond_to? each