consistent use of size_t