preallocate everything