rebuild should only run once