refactor setup and add cppitertools