complete but messy
fixed gitignore conflict