Implementacion de la funcionalidad completa