use size_t instead of uint