refactored into several files
make clean
decoupling and gitignore correction