Versión completamente funcional

Necesita refactorización.