add clone() ability