Add gitignore file.
Make State a class not an Enum.
Add * to idea ignore rule.