agregando tests y refactorizando codigo