sokobans are the best, loved solving this!
do wish there was undoing though...
you should try out my sokoban Abstrate
there's different ways of implementing undoing, some more simpler than others, but the main ones are:
really depends on what you want to do and what's happening in the puzzle (like with complexity)
for your game the former would work best