Help finishing State Machine Code

void loop( ) {
    switch( state ) {
        case 'O':   if( digitalRead( start_button ) == HIGH ) {
                        state = 'G';
                        Timer = millis( );
                        digitalWrite( green_led, 0 );               // green on
                    }
                    break;
        case 'G':   if( (millis( ) - Timer) > green_to ) {          // test for green timeout
                        state = 'Y';
                        Timer = millis( );
                        digitalWrite( green_led, 1 );               // green off
                        digitalWrite( yellow_led, 0 );              // yellow on
                    }
                    break;
        case 'Y':   if( (millis( ) - Timer) > yellow_to ) {         // test for yellow timeout
                        state = 'R';
                        Timer = millis( );
                        digitalWrite( yellow_led, 1 );              // yellow off
                        digitalWrite( red_led, 0 );                 // red on
                    }
                    break;
        case 'R':   if( (millis( ) - Timer) > red_blink_to ) {      // test for red blink timeout
                        digitalWrite( red_led, !(digitalRead( red_led ) );
                        Timer = millis( );
                    }
                    break;
        default:    break;
    }

    if( digitalRead( stop_button ) == HIGH ) {
        digitalWrite( red_led, 1 );             // red off
        digitalWrite( yellow_led, 1 );          // yellow off
        digitalWrite( green_led, 1 );           // green off
        state = 'O';                            // system off
    }
}

Does this work?
Looks like you can get away without button debounce.