Merge pull request #140 from evansb/implement-state
Add state class

(main@f39aa21a06895dec2c49b38fe2ee471681cfb720)