mark off todo
a little untested work on change state