test is ok, only this version is able to use, others is bad, I wiil add code comment is the future