From b49d0efc6e7d82c2ef51b313e3c2cba79d58f9f1 Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph@amissah.com>
Date: Sat, 2 Jul 2016 00:13:01 -0400
Subject: associated array, refactor

---
 org/ao_header_extract.org          | 740 ++-----------------------------------
 org/sdp.org                        |   2 +-
 src/sdp/ao_header_extract_sdlang.d | 734 +-----------------------------------
 views/version.txt                  |   2 +-
 4 files changed, 48 insertions(+), 1430 deletions(-)

diff --git a/org/ao_header_extract.org b/org/ao_header_extract.org
index 04ebdb6..ead930c 100644
--- a/org/ao_header_extract.org
+++ b/org/ao_header_extract.org
@@ -17,416 +17,39 @@
 
 #+name: ao_header_extract_sdl
 #+BEGIN_SRC d
-private auto configSettingsSDLangToAAmake(Tag conf_sdlang) {
-  /+ config settings +/
-  string hm;
-  string hs;
-  auto conf = conf_aa;
-  hm = "webserv";
-  if (!(conf_sdlang.maybe.tags[hm].empty)) {
-    hs = "url_root";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "path";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "images";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "cgi";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
-  hm = "webserv_cgi";
-  if (!(conf_sdlang.maybe.tags[hm].empty)) {
-    hs = "host";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "base_path";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "port";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "user";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "file_links";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
-  hm = "processing";
-  if (!(conf_sdlang.maybe.tags[hm].empty)) {
-    hs = "path";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "dir";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "concord_max";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
-  hm = "flag";
-  if (!(conf_sdlang.maybe.tags[hm].empty)) {
-    hs = "act0";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "act0";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "act1";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "act2";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "act3";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "act4";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "act5";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "act6";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "act7";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "act8";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "act9";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
-  hm = "default";
-  if (!(conf_sdlang.maybe.tags[hm].empty)) {
-    hs = "papersize";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "text_wrap";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "emphasis";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "language";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "digest";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
-  hm = "permission";
-  if (!(conf_sdlang.maybe.tags[hm].empty)) {
-    hs = "share_source";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
-  hm = "program_select";
-  if (!(conf_sdlang.maybe.tags[hm].empty)) {
-    hs = "editor";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "epub_viewer";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "html_viewer";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "odf_viewer";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "pdf_viewer";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "xml_viewer";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
-  hm = "search";
-  if (!(conf_sdlang.maybe.tags[hm].empty)) {
-    hs = "flag";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "action";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "db";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "title";
-    if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-      conf[hm][hs] =
-        to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
+private auto sdlangToAAmake(string[string][string] conf, Tag conf_sdlang) {
+  foreach (maintag, subtags; conf) {
+    foreach (subtag, content; subtags) {
+      if (!(conf_sdlang.maybe.tags[maintag].empty)) {
+        if (!(conf_sdlang.tags[maintag][0].maybe.attributes[subtag].empty)
+        && (conf_sdlang.tags[maintag][0].attributes[subtag][0].value.length > 1)) {
+          writeln(conf_sdlang.tags[maintag][0].attributes[subtag][0].value);
+          conf[maintag][subtag] =
+            to!string(conf_sdlang.tags[maintag][0].attributes[subtag][0].value);
+        }
+      }
     }
   }
   return conf;
 }
 #+END_SRC
 
+* A. conf settings sdlang
+
+#+name: ao_header_extract_sdl
+#+BEGIN_SRC d
+private auto configSettingsSDLangToAAmake(Tag conf_sdlang) {
+  auto conf = sdlangToAAmake(conf_aa, conf_sdlang);
+  return conf;
+}
+#+END_SRC
+
 * B. conf make sdlang
 
 #+name: ao_header_extract_sdl
 #+BEGIN_SRC d
 private auto documentMakeSDLangToAAmake(Tag document_make_sdlang) {
-  /+ dochead +/
-  string hm;
-  string hs;
-  /+ make +/
-  auto dochead_make = make_aa;
-  if (!(document_make_sdlang.maybe.tags["make"].empty)) {
-    hm = "make";
-    hs = "bold";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "breaks";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "cover_image";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "css";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "emphasis";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "footer";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "headings";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "home_button_image";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "home_button_text";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "italics";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "num_top";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "substitute";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "texpdf_font";
-    if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
+  auto dochead_make = sdlangToAAmake(make_aa, document_make_sdlang);
   /+
   hm = "links";
   if (!(document_make_sdlang.maybe.tags[hm].empty)) {
@@ -844,104 +467,12 @@ private auto headerSDLangGet(in char[] src_header) {
 #+name: ao_header_extract_sdl
 #+BEGIN_SRC d
 private auto headerSDLangToAAmake(Tag header_sdlang, string[string][string] dochead_make) {
+  dochead_make = sdlangToAAmake(dochead_make, header_sdlang);
+  auto dochead_meta = sdlangToAAmake(meta_aa, header_sdlang);
+  /+
   /+ dochead +/
   string hm;
   string hs;
-  /+ make +/
-  if (!(header_sdlang.maybe.tags["make"].empty)) {
-    hm = "make";
-    hs = "bold";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "breaks";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "cover_image";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "css";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "emphasis";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "footer";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "headings";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "home_button_image";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "home_button_text";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "italics";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "num_top";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "substitute";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "texpdf_font";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_make[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
   /+ meta +/
   auto dochead_meta = meta_aa;
   hm = "title";
@@ -989,20 +520,6 @@ private auto headerSDLangToAAmake(Tag header_sdlang, string[string][string] doch
       dochead_meta[hm][hs] =
         to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
     }
-    hs = "edition";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "note";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
   }
   hm = "creator";
   if (!(header_sdlang.maybe.tags[hm].empty)) {
@@ -1019,141 +536,6 @@ private auto headerSDLangToAAmake(Tag header_sdlang, string[string][string] doch
       dochead_meta[hm][hs] =
         to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
     }
-    hs = "author_email";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "illustrator";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "translator";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
-  hm = "classify";
-  if (!(header_sdlang.maybe.tags[hm].empty)) {
-    hs = "dewey";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "keywords";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "loc";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "subject";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "topic_register";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
-  hm = "date";
-  if (!(header_sdlang.maybe.tags[hm].empty)) {
-    hs = "added_to_site";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "available";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "created";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "issued";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "modified";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "published";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "valid";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
-  hm = "identifier";
-  if (!(header_sdlang.maybe.tags[hm].empty)) {
-    hs = "isbn";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "oclc";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "pg";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
   }
   hm = "links";
   if (!(header_sdlang.maybe.tags[hm].empty)) {
@@ -1168,47 +550,6 @@ private auto headerSDLangToAAmake(Tag header_sdlang, string[string][string] doch
     //     to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
     // }
   }
-  hm = "notes";
-  if (!(header_sdlang.maybe.tags[hm].empty)) {
-    hs = "abstract";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "description";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
-  hm = "original";
-  if (!(header_sdlang.maybe.tags[hm].empty)) {
-    hs = "language";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "source";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "title";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-  }
   hm = "publisher";
   if (!(header_sdlang.maybe.tags[hm].empty)) {
     hs = "name";
@@ -1219,37 +560,8 @@ private auto headerSDLangToAAmake(Tag header_sdlang, string[string][string] doch
         to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
     }
   }
-  hm = "rights";
-  if (!(header_sdlang.maybe.tags[hm].empty)) {
-    hs = "copyright";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "cover";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "illustrations";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
-    hs = "license";
-    if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-    && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-      writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-      dochead_meta[hm][hs] =
-        to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-    }
   }
+  +/
   auto t = tuple(dochead_make, dochead_meta);
   static assert(!isTypeTuple!(t));
   return t;
diff --git a/org/sdp.org b/org/sdp.org
index c2a2642..ba5e04c 100644
--- a/org/sdp.org
+++ b/org/sdp.org
@@ -24,7 +24,7 @@ struct Version {
   int minor;
   int patch;
 }
-enum ver = Version(0, 6, 1);
+enum ver = Version(0, 6, 2);
 #+END_SRC
 
 * sdp.d   sisu document parser                                       :sdp.d:
diff --git a/src/sdp/ao_header_extract_sdlang.d b/src/sdp/ao_header_extract_sdlang.d
index d4e9e36..16a36e9 100644
--- a/src/sdp/ao_header_extract_sdlang.d
+++ b/src/sdp/ao_header_extract_sdlang.d
@@ -10,410 +10,27 @@ template SiSUheaderExtractSDLang() {
     mixin SiSUregisters;
     mixin RgxInit;
     auto rgx = Rgx();
-    private auto configSettingsSDLangToAAmake(Tag conf_sdlang) {
-      /+ config settings +/
-      string hm;
-      string hs;
-      auto conf = conf_aa;
-      hm = "webserv";
-      if (!(conf_sdlang.maybe.tags[hm].empty)) {
-        hs = "url_root";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "path";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "images";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "cgi";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
-      hm = "webserv_cgi";
-      if (!(conf_sdlang.maybe.tags[hm].empty)) {
-        hs = "host";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "base_path";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "port";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "user";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "file_links";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
-      hm = "processing";
-      if (!(conf_sdlang.maybe.tags[hm].empty)) {
-        hs = "path";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "dir";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "concord_max";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
-      hm = "flag";
-      if (!(conf_sdlang.maybe.tags[hm].empty)) {
-        hs = "act0";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "act0";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "act1";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "act2";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "act3";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "act4";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "act5";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "act6";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "act7";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "act8";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "act9";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
-      hm = "default";
-      if (!(conf_sdlang.maybe.tags[hm].empty)) {
-        hs = "papersize";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "text_wrap";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "emphasis";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "language";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "digest";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
-      hm = "permission";
-      if (!(conf_sdlang.maybe.tags[hm].empty)) {
-        hs = "share_source";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
-      hm = "program_select";
-      if (!(conf_sdlang.maybe.tags[hm].empty)) {
-        hs = "editor";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "epub_viewer";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "html_viewer";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "odf_viewer";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "pdf_viewer";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "xml_viewer";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
-      hm = "search";
-      if (!(conf_sdlang.maybe.tags[hm].empty)) {
-        hs = "flag";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "action";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "db";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "title";
-        if (!(conf_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (conf_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(conf_sdlang.tags[hm][0].attributes[hs][0].value);
-          conf[hm][hs] =
-            to!string(conf_sdlang.tags[hm][0].attributes[hs][0].value);
+    private auto sdlangToAAmake(string[string][string] conf, Tag conf_sdlang) {
+      foreach (maintag, subtags; conf) {
+        foreach (subtag, content; subtags) {
+          if (!(conf_sdlang.maybe.tags[maintag].empty)) {
+            if (!(conf_sdlang.tags[maintag][0].maybe.attributes[subtag].empty)
+            && (conf_sdlang.tags[maintag][0].attributes[subtag][0].value.length > 1)) {
+              writeln(conf_sdlang.tags[maintag][0].attributes[subtag][0].value);
+              conf[maintag][subtag] =
+                to!string(conf_sdlang.tags[maintag][0].attributes[subtag][0].value);
+            }
+          }
         }
       }
       return conf;
     }
+    private auto configSettingsSDLangToAAmake(Tag conf_sdlang) {
+      auto conf = sdlangToAAmake(conf_aa, conf_sdlang);
+      return conf;
+    }
     private auto documentMakeSDLangToAAmake(Tag document_make_sdlang) {
-      /+ dochead +/
-      string hm;
-      string hs;
-      /+ make +/
-      auto dochead_make = make_aa;
-      if (!(document_make_sdlang.maybe.tags["make"].empty)) {
-        hm = "make";
-        hs = "bold";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "breaks";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "cover_image";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "css";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "emphasis";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "footer";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "headings";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "home_button_image";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "home_button_text";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "italics";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "num_top";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "substitute";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "texpdf_font";
-        if (!(document_make_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (document_make_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(document_make_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
+      auto dochead_make = sdlangToAAmake(make_aa, document_make_sdlang);
       /+
       hm = "links";
       if (!(document_make_sdlang.maybe.tags[hm].empty)) {
@@ -483,104 +100,12 @@ template SiSUheaderExtractSDLang() {
       return header_sdlang; // sdlang.ast.Tag
     }
     private auto headerSDLangToAAmake(Tag header_sdlang, string[string][string] dochead_make) {
+      dochead_make = sdlangToAAmake(dochead_make, header_sdlang);
+      auto dochead_meta = sdlangToAAmake(meta_aa, header_sdlang);
+      /+
       /+ dochead +/
       string hm;
       string hs;
-      /+ make +/
-      if (!(header_sdlang.maybe.tags["make"].empty)) {
-        hm = "make";
-        hs = "bold";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "breaks";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "cover_image";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "css";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "emphasis";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "footer";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "headings";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "home_button_image";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "home_button_text";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "italics";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "num_top";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "substitute";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "texpdf_font";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_make[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
       /+ meta +/
       auto dochead_meta = meta_aa;
       hm = "title";
@@ -628,20 +153,6 @@ template SiSUheaderExtractSDLang() {
           dochead_meta[hm][hs] =
             to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
         }
-        hs = "edition";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "note";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
       }
       hm = "creator";
       if (!(header_sdlang.maybe.tags[hm].empty)) {
@@ -658,141 +169,6 @@ template SiSUheaderExtractSDLang() {
           dochead_meta[hm][hs] =
             to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
         }
-        hs = "author_email";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "illustrator";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "translator";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
-      hm = "classify";
-      if (!(header_sdlang.maybe.tags[hm].empty)) {
-        hs = "dewey";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "keywords";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "loc";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "subject";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "topic_register";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
-      hm = "date";
-      if (!(header_sdlang.maybe.tags[hm].empty)) {
-        hs = "added_to_site";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "available";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "created";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "issued";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "modified";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "published";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "valid";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
-      hm = "identifier";
-      if (!(header_sdlang.maybe.tags[hm].empty)) {
-        hs = "isbn";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "oclc";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "pg";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
       }
       hm = "links";
       if (!(header_sdlang.maybe.tags[hm].empty)) {
@@ -807,47 +183,6 @@ template SiSUheaderExtractSDLang() {
         //     to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
         // }
       }
-      hm = "notes";
-      if (!(header_sdlang.maybe.tags[hm].empty)) {
-        hs = "abstract";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "description";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
-      hm = "original";
-      if (!(header_sdlang.maybe.tags[hm].empty)) {
-        hs = "language";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "source";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "title";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-      }
       hm = "publisher";
       if (!(header_sdlang.maybe.tags[hm].empty)) {
         hs = "name";
@@ -858,37 +193,8 @@ template SiSUheaderExtractSDLang() {
             to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
         }
       }
-      hm = "rights";
-      if (!(header_sdlang.maybe.tags[hm].empty)) {
-        hs = "copyright";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "cover";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "illustrations";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
-        hs = "license";
-        if (!(header_sdlang.tags[hm][0].maybe.attributes[hs].empty)
-        && (header_sdlang.tags[hm][0].attributes[hs][0].value.length > 1)) {
-          writeln(header_sdlang.tags[hm][0].attributes[hs][0].value);
-          dochead_meta[hm][hs] =
-            to!string(header_sdlang.tags[hm][0].attributes[hs][0].value);
-        }
       }
+      +/
       auto t = tuple(dochead_make, dochead_meta);
       static assert(!isTypeTuple!(t));
       return t;
diff --git a/views/version.txt b/views/version.txt
index db886cd..cbd04bd 100644
--- a/views/version.txt
+++ b/views/version.txt
@@ -4,4 +4,4 @@ struct Version {
   int minor;
   int patch;
 }
-enum ver = Version(0, 6, 1);
+enum ver = Version(0, 6, 2);
-- 
cgit v1.2.3