implemented proper cloning interface