Major rewrite to classes. Most classes have better toString methods, and
can provide more feedback during API calls.