refactorizando codigo y agregando pruebas