deep object copies using __clone()