initial refactor, added .gitignore