clone instead of modify self