why do I have such a complex gitignore