Hi, There is a logical error in one of the require in transferWithPermit: require(to != address(0) || to != address(this)); it should be require(to != address(0) && to != address(this)); otherwise it has no sens as to=address(this) will pass.