add toc
refactor