Reportstate 11

Provisionally fixes #11
Opening PR with the expectation that there is probably a bit more stuff to do, but some comments would be appreciated.
Never put a mutable object as a default in a Python keyword argument, it's too easy to end up with unexpected behavior:

```
>>> def add(l=[]):
...     l.append(1)
...     print l
>>> add()
[1]
>>> add()
[1, 1]
>>> add()
[1, 1, 1]
```