fb_videomode_to_modelist(specs->modedb, specs->modedb_len,
                                 &info->modelist);
        if (specs->modedb != NULL) {
-               if (xres && yres) {
-                       struct fb_videomode *m;
+               struct fb_videomode *m;
 
+               if (xres && yres) {
                        if ((m = fb_find_best_mode(&var, &info->modelist))) {
                                mode = *m;
                                found  = 1;
                        }
                }
 
-               if (!found && specs->misc & FB_MISC_1ST_DETAIL) {
-                       for (i = 0; i < specs->modedb_len; i++) {
-                               if (specs->modedb[i].flag & FB_MODE_IS_FIRST) {
-                                       mode = specs->modedb[i];
-                                       found = 1;
-                                       break;
-                               }
-                       }
-               }
-
                if (!found) {
-                       mode = specs->modedb[0];
+                       m = fb_find_best_display(&info->monspecs, &info->modelist);
+                       mode = *m;
                        found = 1;
                }
 
 
        fb_var_to_videomode(&modedb, &nvidiafb_default_var);
 
        if (specs->modedb != NULL) {
-               /* get preferred timing */
-               if (specs->misc & FB_MISC_1ST_DETAIL) {
-                       int i;
-
-                       for (i = 0; i < specs->modedb_len; i++) {
-                               if (specs->modedb[i].flag & FB_MODE_IS_FIRST) {
-                                       modedb = specs->modedb[i];
-                                       break;
-                               }
-                       }
-               } else {
-                       /* otherwise, get first mode in database */
-                       modedb = specs->modedb[0];
-               }
+               struct fb_videomode *modedb;
 
-               fb_videomode_to_var(&nvidiafb_default_var, &modedb);
+               modedb = fb_find_best_display(specs, &info->modelist);
+               fb_videomode_to_var(&nvidiafb_default_var, modedb);
                nvidiafb_default_var.bits_per_pixel = 8;
        } else if (par->fpWidth && par->fpHeight) {
                char buf[16];
 
                             info->monspecs.modedb, info->monspecs.modedb_len,
                             NULL, 8);
        } else if (info->monspecs.modedb != NULL) {
-               struct fb_monspecs *specs = &info->monspecs;
-               struct fb_videomode modedb;
+               struct fb_videomode *modedb;
 
-               if (info->monspecs.misc & FB_MISC_1ST_DETAIL) {
-                       int i;
-
-                       for (i = 0; i < specs->modedb_len; i++) {
-                               if (specs->modedb[i].flag & FB_MODE_IS_FIRST) {
-                                       modedb = specs->modedb[i];
-                                       break;
-                               }
-                       }
-               } else {
-                       /* otherwise, get first mode in database */
-                       modedb = specs->modedb[0];
-               }
-
-               savage_update_var(&info->var, &modedb);
+               modedb = fb_find_best_display(&info->monspecs,
+                                             &info->modelist);
+               savage_update_var(&info->var, modedb);
        }
 
        /* maximize virtual vertical length */