Don't set default hash/array until user modifies them
Don't stash default collections into the struct unless
they get written to (copy on write)