Refactorización

Se encapsula el código en un objeto. Esta versión contiene un bug a revisar. No es funcional.