overrode cloning and added related func