Neat and polished, I like the feeling! Well done. I struggled to get past level 4 with the time constraint - not sure what the algorithm is currently, but one thought is to lock like 1/2 of the correctly-positioned pieces when time runs out and shuffle the rest, but keep an overall running time for scoring purposes. You may have something like that already in place, but I couldn't tell for sure. If not, that would've helped me finish the levels and see more, while still letting my score reflect that I was a bit slow. But I appreciate the challenge nonetheless!