a bunch of __repr__s and a bit of docs