think it in a normal way, then optimize