Funcionalidad completa, falta refactoring de codigo