add comment for Puzzle class
use interface instead of abstract class