
Letter dated 26 October 2001 from the Permanent Representative of Cuba to the United Nations addressed to the Secretary-General I have the honour to transmit herewith a background paper on an important case of terrorist activity against Cuba ( see annex ) . The authorities of my country have been following the developments in this case very closely . I should be grateful if you would have this letter and its annex circulated as a document of the Security Council . ( Signed ) Bruno Rodríguez Parrilla Ambassador Permanent Representative Annex to the letter dated 26 October 2001 from the Permanent Representative of Cuba to the United Nations addressed to the Secretary-General As is well known , on 17 November 2000 , a planned attack against President Fidel Castro was thwarted in Panama as a result of information received from Cuba . The plan was organized by the Miami-based Cuban American National Foundation through the notorious international terrorist Posada Carriles , who is currently in custody in Panama . Posada Carriles was responsible for the in-flight explosion , in 1976 , of a Cubana de Aviación passenger aircraft in Barbados , which resulted in the death of 73 people . He is also responsible for terrorist acts against 28 countries . Also being held in Panama are Pedro Remón Rodríguez , a Miami resident with a long history of terrorism , who murdered an official of the Cuban Mission to the United Nations ; Guillermo Novo Sampoll , a United States resident and one of the leaders of Omega 7 , who fired a bazooka at the United Nations in 1964 and was involved in the assassination of Chilean Minister for Foreign Affairs Orlando Letelier in 1976 ; and Miami resident Gaspar Jiménez Escobedo , a chief liaison with the Cuban American National Foundation who participated in the murder of a Cuban official in Mexico , and who was arrested in 1977 for violating the United States Neutrality Act through his terrorist acts against Cuba . He attempted to assassinate the Cuban Ambassador to the United Nations in 1980 , and he has been involved in many plans to attack the Cuban President . Authorities seized 20 kilograms of C-4 and 50 packages of Semtex , maps of the auditorium at the University of Panama and other evidence that the suspects were preparing to blow up the auditorium during an appearance by President Fidel Castro before thousands of students . They might also have attacked other events in connection with the Ibero-American Summit , seriously endangering the lives of the other Presidents . Posada Carriles was trained by the CIA and worked as a CIA officer to unify the most aggressive anti-Cuban mercenary groups . After the explosion of the aircraft in Barbados , he was allowed to escape from the Venezuelan prison to which he had been sentenced and reappeared , collecting salaries from the CIA and the State Department , as one of the leaders of the “ Contragate ” scheme under the direction of Oliver North . He later worked for two Central American Presidents , concocted dozens of terrorist acts against Cuba and attempted to assassinate President Fidel Castro at the Ibero-American Summit in Cartagena and during the President 's visits to the Dominican Republic and Venezuela . Posada Carriles went to the United States several times , and freely visited Miami in 1996. In 1997 , he organized the hotel bombing campaign in Havana and , from El Salvador , gave interviews to The New York Times and the Miami-based television channel Telenoticias . In June 1998 , The New York Times published information amply demonstrating that the Cuban American National Foundation had financed the hotel bombing campaign in Havana through Cuban-American New Jersey resident Chávez Abarca , using Posada Carriles and Central American mercenaries , some of whom were arrested and penalized in Cuba . The Cuban authorities initiated a request for the extradition of Posada Carriles and the other terrorists on 18 November , made a formal request on 29 November and , on 15 January , complied with the request of the Panamanian Ministry of Foreign Affairs to provide further information for the extradition case file within the prescribed time limit . Our country gave full guarantees that the terrorists would receive due process and that they would not be sentenced to death or to more than 20 years ' imprisonment , and proposed that they should be tried by a Latin American international tribunal in Havana . Cuba 's extradition request meets all the relevant requirements and is in full compliance with the Bustamante Code and the Panamanian Constitution and Penal Code . The United States Government has exerted great pressure on Panama to prevent the terrorist group 's extradition . This is not surprising , because successive United States Administrations have organized , financed and carried out many terrorist acts against Cuba over the past few decades , using mercenaries such as these ; because the United States policy of aggression , subversion and economic warfare against Cuba directly encourages terrorism against our country ; and because the United States knowingly allows the Cuban American National Foundation and other terrorist organizations that continually finance , organize , provide means for and carry out terrorist acts against Cuba to exist and operate openly and with impunity in United States territory . On 14 May 2001 , the Government of Panama formally denied Cuba 's extradition request . The Cuban authorities stated their position in this regard in an official note delivered to the Ministry of Foreign Affairs of Panama on 30 May by the Ministry of Foreign Affairs of the Republic of Cuba . Cuba does not seek vengeance , but only a fair trial and severe punishment for a group of terrorists who , for more than three decades , have committed countless crimes against our people . 