add cache
add file rendering emitter
emit file
separate duty of walker
testing utility for file structure