S2:Markup Layer

mart suggested the use of an additional layer type that would act like a sub-layout layer.

Consider the following example:
 * Core (Core)
 * Expressive (Layout)
 * Bloom Blue (Theme)
 * Mixit (Markup)
 * Poe (Theme)

The core layer would remain unchanged. The Expressive layout layer. The Bloom Blue theme layer would remain unchanged. The Poe theme layer would remain unchanged.

Mixit looks like a different layout via the customization interface but in the backend it is simply loading the normal Expressive layer.

Expressive (Layout) would have the main layout definitions.

It would also benefit from altering the &lt;code&gt;designer&lt;/code&gt; function: function markup_designer(string type, string designer, string theme) : string { return ""; } function designer(string type, string designer, string theme) : string { var string return        = ""; var string designer_open = """&lt;div class="asset-name-hover"&gt;"""; var string designer_close = "&lt;/div&gt;"; var string{} designers = { # hash of designer names and URLs };  if ($type == "ljuser") { var UserLite u = UserLite($designer); $return = $designer_open + "Designed by " + $u-&gt;ljuser + $designer_close; } elseif (markup_designer($type, $designer, $theme) != "") { $return = markup_designer($type, $designer, $theme); } elseif ($designers{$designer}) { $return = $designer_open + """Designed by &lt;a href="$designers{$designer}"&gt;$designer&lt;/a&gt;""" + $designer_close; }  return $return; }
 * 1) Return the credit text for the given designer, hook from markup layer
 * 1) Return the credit text for the given designer

Mixit (Markup) would have some overridden properties and functions that are specific to the Mixit themes.

set theme_stylesheet   = { "death"             =&gt; "death/screen.css", "hearts-and-daisies" =&gt; "hearts-and-daisies/screen.css", "kaboom"            =&gt; "kaboom/screen.css", "poe"               =&gt; "poe/screen.css", }; set base_theme         = "poe"; set theme_designer     = "chasethestars"; set theme_designer_type = "ljuser"; set theme_bgcolor      = "#cccccc"; set theme_bordercolor  = "#cccccc"; set theme_fgcolor      = "#000000"; set theme_linkcolor    = "#555555"; function markup_designer(string type, string designer, string theme) : string { var string return = ""; if ($designer == "piximix") { $return = """&lt;a href=" http://www.piximix.com/ "&gt;&lt;img src="$*IMGDIR/${theme}_by_piximix.gif" width="160" height="30" border="0" /&gt;&lt;/a&gt;"""; }  return $return; }

And then when new changes were made to Expressive, they would also be applied to Mixit, without any silly copying or emulation of copying of code between layouts.