Why not use Hash.allocate.replace(self) here then?