How can I speed up the ADC?

uint8_t myAnalogRead(uint8_t pin)
{
uint8_t low;//, high;

// set the analog reference (high two bits of ADMUX) and select the
// channel (low 4 bits). this also sets ADLAR (left-adjust result)
// to 0 (the default).

/*mask ADMUX see http://www.atmel.com/Images/doc8161.pdf point 23.9!!!
set refs1 and refs0 by shifting 3(high high) six bits to the left to use the internal voltage reference
shift high to ADLAR to place the most significant bits in ADCH
and then mask the last nibble with the channel of the pin
*/
ADMUX = (0x3 << 6) | (1 << ADLAR) | pin;

// start the conversion
sbi(ADCSRA, ADSC);

// ADSC is cleared when the conversion finishes
while (bit_is_set(ADCSRA, ADSC));

// we have to read ADCL first; doing so locks both ADCL
// and ADCH until ADCH is read. reading ADCL second would
// cause the results of each conversion to be discarded,
// as ADCL and ADCH would be locked when it completed.
low = ADCL;
//high = ADCH;

// read the high byte
return ADCH;
}

Then in setup, you can also set the division factor to speed things up.

void setup()
{
setDivisionFactor(128);

}

And for setting the division factor, I wrote this little void:

void setDivisionFactor(byte divisionFactor)
{
switch(divisionFactor)
{
case 2 :
cbi(ADCSRA, ADPS2);
cbi(ADCSRA, ADPS1);
sbi(ADCSRA, ADPS0);
break;
case 4 :
cbi(ADCSRA, ADPS2);
sbi(ADCSRA, ADPS1);
cbi(ADCSRA, ADPS0);
break;
case 8 :
cbi(ADCSRA, ADPS2);
sbi(ADCSRA, ADPS1);
sbi(ADCSRA, ADPS0);
break;
case 16 :
sbi(ADCSRA, ADPS2);
cbi(ADCSRA, ADPS1);
cbi(ADCSRA, ADPS0);
break;
case 32 :
sbi(ADCSRA, ADPS2);
cbi(ADCSRA, ADPS1);
sbi(ADCSRA, ADPS0);
break;
case 64 :
sbi(ADCSRA, ADPS2);
sbi(ADCSRA, ADPS1);
cbi(ADCSRA, ADPS0);
break;
case 128 :
sbi(ADCSRA, ADPS2);
sbi(ADCSRA, ADPS1);
sbi(ADCSRA, ADPS0);
break;
}
}

I hope someone turns all of this in a special analogReadspeedy or something like that and introduces it into the standard Arduino library!