added clone() method