use std::size_t instead of unsigned int