another improvement, time usage 50%