add .DS_Store to gitignore
pass the state in constructors