why return `0` not `1`?