Added some constraint checking which is looking extremely promising.  With luck all I've got left to do is add the rest of the constraints then solve the puzzle :-)