deep clone an object, return a new object and extend it