Generalize the KMC design
Update .gitignore