better reprs, docs, and example