use callbacks for enumerating moves

Signed-off-by: Peter Ellis Jones <pete@peterellisjones.com>