Completely redesign based on test print

Add a ton of documentation, too.