try to optimize algorithm