making sure we use size_t everywhere