now returns not zero if fails