finish refacto