diff --git a/doc/type/choice.txt b/doc/type/choice.txt
new file mode 100644
index 00000000..21be8b29
--- /dev/null
+++ b/doc/type/choice.txt
@@ -0,0 +1,43 @@
+Data type: choice for a choice field
+
+A possible choice for a choice [[type:field]].
+
+--Properties--
+! Property Type Default Description
+| @name@ [[type:string]] ''Required'' Name of this choice, displayed in the drop down list.
+| @line below@ [[type:boolean]] @false@ Display a line below this item?
+| @group choice@ [[type:string]] ''no'' Can this submenu of choices itself be selected?
+| @choices@ [[type:list]] of [[type:choice]]s Submenu of choices.
+| @enabled@ [[type:scriptable]] [[type:boolean]] Is this choice selectable?
+| @type@ @"check"@ or @"radio"@ @"check"@ How should this choice be displayed? As a checkbox or a radio box?
+ Only applies to multiple choice fields.
+
+A choice can also be given in a short form, in that case only the name is specified.
+
+--Names--
+
+The full name of a choice is that of the choice and its parents, separated by spaces.
+This is the value actually stored in values and manipulated by scripts.
+
+For example
+>field:
+> type: choice
+> choice:
+> name: large
+> choice: red
+> choice: blue
+> choice:
+> name: small
+> group choice: just small
+> choice: green
+> choice: yellow
+
+The choice red is called @"large red"@, while green is @"small green"@.
+The group choice 'just small' gets the name of the group, @"small"@.
+
+--Example--
+In short form:
+>choice: apples
+Is the same as:
+>choice:
+> name: apples
diff --git a/doc/type/color_choice.txt b/doc/type/color_choice.txt
new file mode 100644
index 00000000..7547e05d
--- /dev/null
+++ b/doc/type/color_choice.txt
@@ -0,0 +1,13 @@
+Data type: choice for a color field
+
+A possible choice for a color [[type:field]].
+
+--Properties--
+! Property Type Description
+| @name@ [[type:string]] Name of this choice, displayed in the drop down list.
+| @color@ [[type:color]] Color this choice corresponds with.
+
+--Example--
+>choice:
+> name: red
+> color: rgb(255,0,0)
diff --git a/doc/type/export_template.txt b/doc/type/export_template.txt
index e69de29b..511cae0c 100644
--- a/doc/type/export_template.txt
+++ b/doc/type/export_template.txt
@@ -0,0 +1,51 @@
+File type: Export template
+
+--Overview--
+
+An export template describes a way for a set to be exported to a HTML or other text files.
+
+--Package format--
+An export template is described in a [[file:package]] with the .mse-export-template file extension.
+Its name should begin with game- where game is the name of the game the template is made for.
+It should contain a [[file:format|data file]] called export-template with the following properties.
+
+--Properties--
+! Property Type Default Description
+| '''Common to all packages''' <<< <<< <<<
+| @mse version@ [[type:version]] ''required'' Version of MSE this export template is made for.
+| @short name@ [[type:string]] file name A short name of this export template, for the 'new set' and style panel lists.
+| @full name@ [[type:string]] file name A longer name of this export template.
+| @icon@ [[type:filename]] ''none'' Filename of an icon / preview for this export template, for the 'export to HTML' dialog.
+| @position hint@ [[type:int]] ∞ Where to place this item in the list? Lower numbers come first.
+| @version@ [[type:version]] @0.0.0@ Version number of this package.
+| @depends on@ [[type:list]] of [[type:dependency]]s
+ Packages this package depends on.
+
+| '''Specific to export template''' <<< <<< <<<
+| @game@ Name of a [[type:game]] ''required'' Game this export template is made for
+| @file type@ [[type:string]] @"HTML files (*.html)|*.html"@
+ File type to use, this is a list separated by @|@ characters.
+ Alternatingly, a human description and a file pattern to match are given.
+| @create directory@ [[type:boolean]] @false@ Should a directory for data files be created? This is required for some script function.
+| @option fields@ [[type:list]] of [[type:field]]s Fields for additional options to show.
+| @option style@ [[type:indexmap]] of [[type:style]]s Styling for the @option fields@.
+| @script@ [[type:script]] Script that generates the text that will be written to the exported file.
+
+During the evaluation of the script the following variables are available:
+| @game@ The current game.
+| @style@ The current stylesheet.
+| @set@ The set being exported.
+| @options@ The values of the @option fields@.
+| @directory@ Name of the directory created (if @create directory@ is set).
+
+--See also--
+The following functions are made specifically for exporting to html:
+| [[fun:to_html]] Convert [[type:tagged text]] to html.
+| [[fun:symbols_to_html]] Convert text to html using a [[type:symbol font]].
+| [[fun:to_text]] Remove all tags from tagged text.
+| [[fun:copy_file]] Copy a file from the [[type:export template]] to the output directory.
+| [[fun:write_text_file]] Write a text file to the output directory.
+| [[fun:write_image_file]] Write an image file to the output directory.
+
+--Example--
+Look at the @"magic-spoiler.mse-export-template"@ for an example.
diff --git a/doc/type/field.txt b/doc/type/field.txt
index e69de29b..3acaf5e7 100644
--- a/doc/type/field.txt
+++ b/doc/type/field.txt
@@ -0,0 +1,114 @@
+Data type: field
+
+--Overview--
+
+A field is a description of a kind of 'container' to hold a value.
+
+For example the [[type:value]] of a 'text field' is a piece of text, that of a 'color field' a [[type:color]], etc.
+
+Things that are fields are, "card color" and "card name".
+Not a particular color or name, but a description of what a card color and a card name are for a particular [[type:game]].
+
+Fields are part of the [[file:style triangle]]:
+| Description Looks Data
+| [[type:Game]] [[type:Stylesheet]] [[type:Set]]
+| '''Field''' [[type:Style]] [[type:Value]]
+
+--Properties--
+! Property Type Default Description
+| @type@ One of: ''required'' Type of field.
+ * @text@
+ * @choice@
+ * @multiple choice@
+ * @boolean@
+ * @image@
+ * @symbol@
+ * @color@
+ * @info@
+| @name@ [[type:string]] ''required'' Name of the field.
+| @description@ [[type:string]] @""@ Description of the field, shown in the status bar when the mouse is over the field.
+| @icon@ [[type:filename]] Filename of an icon for this field, used for automatically generated [[type:statistics category]]s.
+| @editable@ [[type:boolean]] @true@ Can values of this field be edited?
+| @save value@ [[type:boolean]] @true@ Should values of this field be saved to files? Should be disabled for values that are generated by scripts.
+| @show statistics@ [[type:boolean]] @true@ Should a [[type:statistics dimension]] and [[type:statistics category|category]] be made for this field,
+ causing it to be listed on the statistics panel?
+| @identifying@ [[type:boolean]] @false@ Does this field give the name of the [[type:card]] or [[type:set]]?
+| @card list column@ [[type:int]] @0@ On what position in the card list should this field be put?
+| @card list width@ [[type:int]] @100@ Width of the card list column in pixels.
+| @card list visible@ [[type:boolean]] @false@ Should this field be shown in the card list by default?
+| @card list allow@ [[type:boolean]] @true@ Should this field be allowed in the card list at all?
+| @card list name@ [[type:string]] field name Alternate name to use for the card list, for example an abbreviation.
+| @card list alignment@ [[type:alignment]] @left@ Alignment of the card list column.
+| @sort script@ [[type:script]] Alternate way to sort the card list when using this column to sort the list.
+| @tab index@ [[type:int]] @0@ Index for moving through the fields with the tab key. The default is from left to right and then top to bottom.
+
+The @type@ determines what values of this field contain:
+! Type Values contain
+| @text@ Text with markup (a [[type:tagged string]])
+| @choice@ A choice from a list
+| @multiple choice@ Zero or more choices from a list
+| @boolean@ @yes@ or @no@
+| @image@ Any image
+| @symbol@ A [[type:symbol]] edited with the symbol editor
+| @info@ An informational message, for example to group fields together.
+
+Additional properties are available, depending on the type of field:
+
+! Type Property Type Default Description
+| @"text"@ @script@ [[type:script]] Script to apply to values of this field after each change.
+| ^^^ @default@ [[type:script]] Script to determine the value when it is in the default state (not edited).
+| ^^^ @default name@ [[type:string]] @"Default"@ Name of the default state, currently not used.
+| ^^^ @multi line@ [[type:boolean]] @false@ Can values of this field contain line breaks?
+
+| @"choice"@ @script@ [[type:script]] Script to apply to values of this field after each change.
+| ^^^ @default@ [[type:script]] Script to determine the value when it is in the default state (not edited).
+| ^^^ @initial@ [[type:string]] Initial value for new values for this field.
+| ^^^ @default name@ [[type:string]] @"Default"@ Name of the default state.
+| ^^^ @choices@ [[type:list]] of [[type:choice]]s Possible values for this field.
+
+| @"multiple choice"@ <<< <<< <<<
+ '' Multiple choice fields have the same attributes as normal choice fields.''
+ To refer to a combination of values in the initial attribute use @choice1, choice2, choice3@.
+ These choices must apear in the same order as they do in the @choices@ property.
+
+| @"boolean"@ ''A boolean field is a choice field with the choices @"yes"@ and @"no"@.'' <<< <<< <<<
+
+| @"color"@ @script@ [[type:script]] Script to apply to values of this field after each change.
+| ^^^ @default@ [[type:script]] Script to determine the value when it is in the default state (not edited).
+| ^^^ @initial@ [[type:string]] Initial color for new values for this field.
+| ^^^ @default name@ [[type:string]] @"Default"@ Name of the default state.
+| ^^^ @allow custom@ [[type:boolean]] @true@ Are colors other then those from the choices allowed?
+| ^^^ @choices@ [[type:list]] of [[type:color choice]]s Possible values for this field.
+
+| @"image"@ ''no extra properties'' <<< <<< <<<
+
+| @"symbol"@ ''no extra properties'' <<< <<< <<<
+
+| @"info"@ @script@ [[type:script]] Script to determine the value to show.
+
+--Example--
+The @title@ field gives the title of a set:
+>set field:
+> type: text
+> name: title
+> identifying: true
+
+The border color of cards can be selected from a list of choices, but other values are also possible.
+The default is based on a set field. Statistics don't make much sense for the border color.
+>card field:
+> type: color
+> name: border color
+> default: set.border_color
+> choice:
+> name: black
+> color: rgb(0,0,0)
+> choice:
+> name: white
+> color: rgb(255,255,255)
+> choice:
+> name: silver
+> color: rgb(128,128,128)
+> choice:
+> name: gold
+> color: rgb(200,180,0)
+> show statistics: false
diff --git a/doc/type/function.txt b/doc/type/function.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/doc/type/image.txt b/doc/type/image.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/doc/type/index.txt b/doc/type/index.txt
index e8d40439..4e916975 100644
--- a/doc/type/index.txt
+++ b/doc/type/index.txt
@@ -36,7 +36,7 @@ These contain several properties, similair to the file types. But they are part
* item
* item
* item
-| [[type:indexmap|'index' map]] Lists indexed by field name
+| [[type:indexmap]] Lists indexed by field name
| name: | someone |
| type: | something |