simutaneous functions

I’m relatively new at this and am having difficultly creating a program that will enable me to have multiple functions/actions/commands happening at the same time. I am trying to orchestrate a smoke machine and several different strands of leds to flash at different times (and sometimes overlapping). It will be programmed into a linear ‘event’ which will end after 5-6 mins. I’ve included a simplified version of the program below and marked the problem between >>> and <<<. How can I have these functions run simultaneously?

thanks. :-?

///////////////////////////////////////////////////////////////////////////////////////////
// Define I/O pins and other global variables
///////////////////////////////////////////////////////////////////////////////////////////

int RedPin = 2; // output to red led
int BluePin = 3; // output to blue led
int GreenPin = 4; // output to green led

void setup () {

Serial.begin(9600);

Serial.println (“hello world”);
pinMode(RedPin, OUTPUT);
pinMode(BluePin, OUTPUT);
pinMode(GreenPin, OUTPUT);
}

void loop (){

redflash(); greenflash(); blueflash();<<<<
delay(750);
}

void redflash()
{
digitalWrite (RedPin, HIGH);
delay (250);
digitalWrite (RedPin, LOW);
delay (250);
digitalWrite (RedPin, HIGH);
delay (250);
digitalWrite (RedPin, LOW);
delay (250);
}

void greenflash()
{ digitalWrite (GreenPin, HIGH);
delay (150);
digitalWrite (GreenPin, LOW);
delay (250);
digitalWrite (GreenPin, HIGH);
delay (350);
digitalWrite (GreenPin, LOW);
delay (250);
}

void blueflash()
{ digitalWrite (BluePin, HIGH);
delay (700);
digitalWrite (BluePin, LOW);
delay (100);
digitalWrite (BluePin, HIGH);
delay (100);
digitalWrite (BluePin, LOW);
delay (100);
}

Get rid of the delays, and look at the blink without delay example