- use size_t and return 0 on fail