refactor to top fold level
add .gitignore