ptrdiff_t -> size_t (more portable)