some examples
double buffering