fix a bug of this pointer and modified some rules