Added gitignore
Added State Pattern