think it in a normal way first, then try to optimize it