avoid infinite recursion