TODO:
 * scanner
   * optimize (more)
 * tag balancer
   * optimize (more)
   * incorporate ideas from JTidy
