This is original code and I know the issue about operator overloading of !.