He organizado un poco el código y cambiada la visibilidad de los métodos