Changing clone to copy constructors to avoid weired side-effect problems