[solved] traffic light code

while ((current_time - yellow_start_time) <= yellow_duration)
    {
      current_time = millis();
    }

That is just the same and just as bad as using the delay function.
If you think you are using the blink without delay you are mistaken.

but have problems with the lights sequence changing when i add my bit.

So what sort of problems? The lights will do what you wrote so how do you want it to go?