this doesn't need to be a pointer (the zero value is usable)