add DFS generator algorithm. TODO: wire it up for frame-by-frame rendering