fix: missing dependencies
add State class
refactoring

 * removed operator[]
 * removed *_at functions
 * added *.at() functions instead (it is inconsistent in a way, but way briefer)
added operator=() = delete