Better comments.
Never use underlining, makes the game board hard to read.
Do not declare variables in loops (satisfy gcc warning).
Better variable name: val -> val_under_cursor.
Formatting.
Swap puzzles, use a symlink to switch between them now.
Stubbing, disable diagonal movement due to conflict.
Add undo.c, undo.h, proper invocations, touch the Makefile.
Add recursive "free" utility, implement all methods, cursory testing done.
Add undo support. Extensive manual memory leak testing completed with valgrind.