abstract factory pattern refactoring
added simple puzzle visualizer test