check puzzle on changes rather than rely on button
better conflict checking