code optimization
memory optimization
time optimization, only one pass