why max is size_t?