this won't work if `0` is passed