And that's why I don't want to add self. We should either use id/parent/kind or self. Since you can always compute the other set of data, it doesn't make sense to have it denormalized like this. Arguments could be made to add a *datastore.Key return value to Put(), which would make it identical to the stock datastore API. Actually, yes, I like that. Keys will be returned from Put and PutMulti (exactly as they are in the datastore API). You are then free to assign them to a self field of a struct, but that must be done manually. goon can't automate that due to the sync issues discussed above.