added initial deep copy functions