add .gitignore, refactor