     }
 
     pano.setFOV(horiz, vert);
+    if (!positionCamera("Adjust start pos\nSet exposure & focus", NULL, NULL)){
+        return false;
+    }
     running = true;
     menu.sync();
+    executePano();
+    return __;
+}
+
+/*
+ * Menu callback invoked by selecting "Repeat"
+ */
+int onRepeat(int __){
+    setPanoParams();
+
+    pano.setFOV(horiz, vert);
     if (!positionCamera("Adjust start pos\nSet exposure & focus", NULL, NULL)){
         return false;
     }
-    executePano();
-    return __;
-}
-
-/*
- * Menu callback invoked by selecting "Repeat"
- */
-int onRepeat(int __){
-    setPanoParams();
-
-    pano.setFOV(horiz, vert);
     running = true;
     menu.sync();
-    if (!positionCamera("Adjust start pos\nSet exposure & focus", NULL, NULL)){
-        return false;
-    }
     executePano();
     return __;
 }

 * @param horiz: pointer to store horizontal movement
 * @param vert:  pointer to store vertical movement
 */
bool positionCamera(const char *msg, int *horiz, int *vert){
    int pos_x, pos_y;
    int h = 0, v = 0;
    unsigned when_to_display = 0;

    display.clearDisplay();
    display.setCursor(0,0);


// these variables are modified by the menu
volatile int focal, shutter, pre_shutter, orientation, aspect, shots, motors_enable, display_invert;
volatile int horiz, vert;
volatile int running;

void setup() {
