avoid deep copy