             params.vals.stage_steps[stage_selected] = 8;
           }
           seq_values.stage_steps[stage_selected] = params.vals.stage_steps[stage_selected];
-          display->fill_rect(16 * stage_selected, 25, 16, 17, DUINO_SSD1306::White);
-          for(uint8_t j = 0; j < params.vals.stage_steps[stage_selected]; ++j)
-          {
-            display->draw_hline(16 * stage_selected + 2, 40 - j * 2, 5, DUINO_SSD1306::Black);
-            display->draw_hline(16 * stage_selected + 9, 40 - j * 2, 5, DUINO_SSD1306::Black);
-          }
+          display->fill_rect(16 * stage_selected, 35, 16, 7, DUINO_SSD1306::White);
+          display_steps(16 * stage_selected, 35, params.vals.stage_steps[stage_selected], DUINO_SSD1306::Black);
           break;
         case 4: // gate
           params.vals.stage_gate[stage_selected] += v;

            params.vals.stage_pitch[stage_selected] = 119;
          }
          seq_values.stage_cv[stage_selected] = note_to_cv(params.vals.stage_pitch[stage_selected]);
          display->fill_rect(16 * stage_selected, 10, 16, 15, DUINO_SSD1306::White);
          display_note(16 * stage_selected, 9, params.vals.stage_pitch[stage_selected], DUINO_SSD1306::Black);
          break;
        case 3: // steps
          params.vals.stage_steps[stage_selected] += v;

        }
        break;
      case 2: // pitch
        display->fill_rect(16 * stage_selected, 20, 16, 15, DUINO_SSD1306::Inverse);
        break;
      case 3: // steps
        display->fill_rect(16 * stage_selected, 35, 16, 7, DUINO_SSD1306::Inverse);
        break;
      case 4: // gate
        display->fill_rect(16 * stage_selected, 42, 16, 16, DUINO_SSD1306::Inverse);
