use NSError api instead