Rewrite docs
Add tests; boost coverage
Impose best practices
Refactor repeated code into subroutines and modules