add gitignore and some refactor