what if source is an object? we should have an option to deep clone object.