Gran refactor, se lleva funcionalidad a objetos y se limpia el codigo