add caching
add .gitignore