use unsigned int vs size_t, since that just seems more correct