added .gitignore, added custom exceptions