initial commit
a working version with original code cleaned up and some visualization additions for interactive debugging