Why do you use `allocate` here, but `new` in the other cases below?