Added the concept of State
Updated .gitignore