diff --git a/Links.md b/Links.md
index b340d80..bef83dc 100644
--- a/Links.md
+++ b/Links.md
@@ -2,16 +2,17 @@
* `cg3/`
* [functions.cg3](src-cg3-functions.cg3.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/cg3/functions.cg3))
* `fst/`
- * `stems/`
- * [rootStems.lexc](src-fst-stems-rootStems.lexc.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/fst/stems/rootStems.lexc))
- * `phonetics/`
- * [txt2ipa.xfscript](src-phonetics-txt2ipa.xfscript.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/phonetics/txt2ipa.xfscript))
- * `transcriptions/`
- * [transcriptor-abbrevs2text.lexc](src-transcriptions-transcriptor-abbrevs2text.lexc.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/transcriptions/transcriptor-abbrevs2text.lexc))
- * [transcriptor-numbers-digit2text.lexc](src-transcriptions-transcriptor-numbers-digit2text.lexc.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/transcriptions/transcriptor-numbers-digit2text.lexc))
+ * `morphology/`
+ * `stems/`
+ * `phonetics/`
+ * [txt2ipa.xfscript](src-fst-phonetics-txt2ipa.xfscript.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/fst/phonetics/txt2ipa.xfscript))
+ * `transcriptions/`
+ * [transcriptor-abbrevs2text.lexc](src-fst-transcriptions-transcriptor-abbrevs2text.lexc.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/fst/transcriptions/transcriptor-abbrevs2text.lexc))
+ * [transcriptor-numbers-digit2text.lexc](src-fst-transcriptions-transcriptor-numbers-digit2text.lexc.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/fst/transcriptions/transcriptor-numbers-digit2text.lexc))
* `tools/`
* `grammarcheckers/`
* [grammarchecker.cg3](tools-grammarcheckers-grammarchecker.cg3.html) ([src](https://github.com/giellalt/lang-epo/blob/main/tools/grammarcheckers/grammarchecker.cg3))
+ * `/`
* `tokenisers/`
* [tokeniser-disamb-gt-desc.pmscript](tools-tokenisers-tokeniser-disamb-gt-desc.pmscript.html) ([src](https://github.com/giellalt/lang-epo/blob/main/tools/tokenisers/tokeniser-disamb-gt-desc.pmscript))
* [tokeniser-gramcheck-gt-desc.pmscript](tools-tokenisers-tokeniser-gramcheck-gt-desc.pmscript.html) ([src](https://github.com/giellalt/lang-epo/blob/main/tools/tokenisers/tokeniser-gramcheck-gt-desc.pmscript))
diff --git a/Makefile.in b/Makefile.in
index 3cabc4a..b3a1459 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -343,6 +343,10 @@ SEE = @SEE@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SPELLERVERSION = @SPELLERVERSION@
+SPELLER_DESC_ENG = @SPELLER_DESC_ENG@
+SPELLER_DESC_NATIVE = @SPELLER_DESC_NATIVE@
+SPELLER_NAME_ENG = @SPELLER_NAME_ENG@
+SPELLER_NAME_NATIVE = @SPELLER_NAME_NATIVE@
STRIP = @STRIP@
TAR = @TAR@
TWOLC = @TWOLC@
@@ -936,7 +940,7 @@ regenerate-markdown: generate-markdown
# Generate endpoint json file for shield.io lemma count badge.
# Only to be stored in the gh-pages branch, ignored in main.
-$(srcdir)/lemmacount.json: $(top_srcdir)/src/fst/stems/*.lexc
+$(srcdir)/lemmacount.json: $(top_srcdir)/src/fst/morphology/stems/*.lexc
$(AM_V_GEN)$(GTCORE)/scripts/make-lemmacount.json.sh $(abs_top_srcdir) > $@
# Generate a maturity.json file as endpoint for the maturity badge.
@@ -944,7 +948,7 @@ $(srcdir)/maturity.json:
$(AM_V_GEN)$(GTCORE)/scripts/make-maturity.json.sh $(REPONAME) > $@
# Convert source filenames to extracted documentation filenames, VPATH safe:
-# ../../../src/fst/stems/adverbs.lexc => src-fst-stems-adverbs.lexc.md
+# ../../../src/fst/morphology/stems/adverbs.lexc => src-fst-morphology-stems-adverbs.lexc.md
define src2md
$(addsuffix .md,$(subst /,-,$(subst $(top_srcdir)/,,$(1))))
endef
diff --git a/epo.md b/epo.md
index 27b5359..87996f1 100644
--- a/epo.md
+++ b/epo.md
@@ -172,19 +172,19 @@ These were the set types.
* * *
This (part of) documentation was generated from [src/cg3/functions.cg3](https://github.com/giellalt/lang-epo/blob/main/src/cg3/functions.cg3)
-* rootStems.lexc Noun, Adj, Verb, Adv
examples:*
-* *konstrua:* `konstru+R+Adj+Sing+Nom
`
-* *konstruo:* `konstru+R+N+Sing+Nom
`
-* *konstrui:* `konstru+R+V+Inf
`
-* *konstruojn:* `konstru+R+N+Plu+Acc
`
-* *rapide:* `rapid+R+Adv
`
-* *lingvoj:* `lingv+R+N+Plu+Nom
`
-* *tempojn:* `temp+R+N+Plu+Acc
`
-* *germanio:* `german+R+Suff+N+Sing+Nom
`
+* rootStems.lexc Noun, Adj, Verb, Adv examples:*
+* *konstrua:* `konstru+R+Adj+Sing+Nom`
+* *konstruo:* `konstru+R+N+Sing+Nom`
+* *konstrui:* `konstru+R+V+Inf`
+* *konstruojn:* `konstru+R+N+Plu+Acc`
+* *rapide:* `rapid+R+Adv`
+* *lingvoj:* `lingv+R+N+Plu+Nom`
+* *tempojn:* `temp+R+N+Plu+Acc`
+* *germanio:* `german+R+Suff+N+Sing+Nom`
* * *
-This (part of) documentation was generated from [src/fst/stems/rootStems.lexc](https://github.com/giellalt/lang-epo/blob/main/src/fst/stems/rootStems.lexc)
+This (part of) documentation was generated from [src/fst/morphology/stems/rootStems.lexc](https://github.com/giellalt/lang-epo/blob/main/src/fst/morphology/stems/rootStems.lexc)
---
@@ -351,7 +351,7 @@ retracted tongue root _q
* * *
-This (part of) documentation was generated from [src/phonetics/txt2ipa.xfscript](https://github.com/giellalt/lang-epo/blob/main/src/phonetics/txt2ipa.xfscript)
+This (part of) documentation was generated from [src/fst/phonetics/txt2ipa.xfscript](https://github.com/giellalt/lang-epo/blob/main/src/fst/phonetics/txt2ipa.xfscript)
---
@@ -371,7 +371,7 @@ For example:
* * *
-This (part of) documentation was generated from [src/transcriptions/transcriptor-abbrevs2text.lexc](https://github.com/giellalt/lang-epo/blob/main/src/transcriptions/transcriptor-abbrevs2text.lexc)
+This (part of) documentation was generated from [src/fst/transcriptions/transcriptor-abbrevs2text.lexc](https://github.com/giellalt/lang-epo/blob/main/src/fst/transcriptions/transcriptor-abbrevs2text.lexc)
---
@@ -385,7 +385,7 @@ For example:
* * *
-This (part of) documentation was generated from [src/transcriptions/transcriptor-numbers-digit2text.lexc](https://github.com/giellalt/lang-epo/blob/main/src/transcriptions/transcriptor-numbers-digit2text.lexc)
+This (part of) documentation was generated from [src/fst/transcriptions/transcriptor-numbers-digit2text.lexc](https://github.com/giellalt/lang-epo/blob/main/src/fst/transcriptions/transcriptor-numbers-digit2text.lexc)
---
diff --git a/index.md b/index.md
index 3f4af94..10c7a07 100644
--- a/index.md
+++ b/index.md
@@ -20,16 +20,17 @@ Below is an autogenerated list of documentation pages built from structured comm
* `cg3/`
* [functions.cg3](src-cg3-functions.cg3.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/cg3/functions.cg3))
* `fst/`
- * `stems/`
- * [rootStems.lexc](src-fst-stems-rootStems.lexc.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/fst/stems/rootStems.lexc))
- * `phonetics/`
- * [txt2ipa.xfscript](src-phonetics-txt2ipa.xfscript.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/phonetics/txt2ipa.xfscript))
- * `transcriptions/`
- * [transcriptor-abbrevs2text.lexc](src-transcriptions-transcriptor-abbrevs2text.lexc.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/transcriptions/transcriptor-abbrevs2text.lexc))
- * [transcriptor-numbers-digit2text.lexc](src-transcriptions-transcriptor-numbers-digit2text.lexc.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/transcriptions/transcriptor-numbers-digit2text.lexc))
+ * `morphology/`
+ * `stems/`
+ * `phonetics/`
+ * [txt2ipa.xfscript](src-fst-phonetics-txt2ipa.xfscript.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/fst/phonetics/txt2ipa.xfscript))
+ * `transcriptions/`
+ * [transcriptor-abbrevs2text.lexc](src-fst-transcriptions-transcriptor-abbrevs2text.lexc.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/fst/transcriptions/transcriptor-abbrevs2text.lexc))
+ * [transcriptor-numbers-digit2text.lexc](src-fst-transcriptions-transcriptor-numbers-digit2text.lexc.html) ([src](https://github.com/giellalt/lang-epo/blob/main/src/fst/transcriptions/transcriptor-numbers-digit2text.lexc))
* `tools/`
* `grammarcheckers/`
* [grammarchecker.cg3](tools-grammarcheckers-grammarchecker.cg3.html) ([src](https://github.com/giellalt/lang-epo/blob/main/tools/grammarcheckers/grammarchecker.cg3))
+ * `/`
* `tokenisers/`
* [tokeniser-disamb-gt-desc.pmscript](tools-tokenisers-tokeniser-disamb-gt-desc.pmscript.html) ([src](https://github.com/giellalt/lang-epo/blob/main/tools/tokenisers/tokeniser-disamb-gt-desc.pmscript))
* [tokeniser-gramcheck-gt-desc.pmscript](tools-tokenisers-tokeniser-gramcheck-gt-desc.pmscript.html) ([src](https://github.com/giellalt/lang-epo/blob/main/tools/tokenisers/tokeniser-gramcheck-gt-desc.pmscript))
diff --git a/lemmacount.json b/lemmacount.json
index 54f27cb..f6975c3 100644
--- a/lemmacount.json
+++ b/lemmacount.json
@@ -1 +1 @@
-{ "schemaVersion": 1, "label": "Lemmas", "message": "401", "color": "black" }
+{ "schemaVersion": 1, "label": "Lemmas", "message": "10", "color": "black" }
diff --git a/src-fst-morphology-stems-rootStems.lexc.md b/src-fst-morphology-stems-rootStems.lexc.md
new file mode 100644
index 0000000..d5de47d
--- /dev/null
+++ b/src-fst-morphology-stems-rootStems.lexc.md
@@ -0,0 +1,18 @@
+
+
+* rootStems.lexc Noun, Adj, Verb, Adv examples:*
+* *konstrua:* `konstru+R+Adj+Sing+Nom`
+* *konstruo:* `konstru+R+N+Sing+Nom`
+* *konstrui:* `konstru+R+V+Inf`
+* *konstruojn:* `konstru+R+N+Plu+Acc`
+* *rapide:* `rapid+R+Adv`
+* *lingvoj:* `lingv+R+N+Plu+Nom`
+* *tempojn:* `temp+R+N+Plu+Acc`
+* *germanio:* `german+R+Suff+N+Sing+Nom`
+
+* * *
+
+This (part of) documentation was generated from [src/fst/morphology/stems/rootStems.lexc](https://github.com/giellalt/lang-epo/blob/main/src/fst/morphology/stems/rootStems.lexc)
+
+---
+
diff --git a/src-phonetics-txt2ipa.xfscript.md b/src-fst-phonetics-txt2ipa.xfscript.md
similarity index 95%
rename from src-phonetics-txt2ipa.xfscript.md
rename to src-fst-phonetics-txt2ipa.xfscript.md
index e48741c..6b79f09 100644
--- a/src-phonetics-txt2ipa.xfscript.md
+++ b/src-fst-phonetics-txt2ipa.xfscript.md
@@ -161,7 +161,7 @@ retracted tongue root _q
* * *
-This (part of) documentation was generated from [src/phonetics/txt2ipa.xfscript](https://github.com/giellalt/lang-epo/blob/main/src/phonetics/txt2ipa.xfscript)
+This (part of) documentation was generated from [src/fst/phonetics/txt2ipa.xfscript](https://github.com/giellalt/lang-epo/blob/main/src/fst/phonetics/txt2ipa.xfscript)
---
diff --git a/src-fst-stems-rootStems.lexc.md b/src-fst-stems-rootStems.lexc.md
deleted file mode 100644
index 6cc6339..0000000
--- a/src-fst-stems-rootStems.lexc.md
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-* rootStems.lexc Noun, Adj, Verb, Adv
examples:*
-* *konstrua:* `konstru+R+Adj+Sing+Nom
`
-* *konstruo:* `konstru+R+N+Sing+Nom
`
-* *konstrui:* `konstru+R+V+Inf
`
-* *konstruojn:* `konstru+R+N+Plu+Acc
`
-* *rapide:* `rapid+R+Adv
`
-* *lingvoj:* `lingv+R+N+Plu+Nom
`
-* *tempojn:* `temp+R+N+Plu+Acc
`
-* *germanio:* `german+R+Suff+N+Sing+Nom
`
-
-* * *
-
-This (part of) documentation was generated from [src/fst/stems/rootStems.lexc](https://github.com/giellalt/lang-epo/blob/main/src/fst/stems/rootStems.lexc)
-
----
-
diff --git a/src-transcriptions-transcriptor-abbrevs2text.lexc.md b/src-fst-transcriptions-transcriptor-abbrevs2text.lexc.md
similarity index 53%
rename from src-transcriptions-transcriptor-abbrevs2text.lexc.md
rename to src-fst-transcriptions-transcriptor-abbrevs2text.lexc.md
index fb148c6..f22f3bf 100644
--- a/src-transcriptions-transcriptor-abbrevs2text.lexc.md
+++ b/src-fst-transcriptions-transcriptor-abbrevs2text.lexc.md
@@ -14,7 +14,7 @@ For example:
* * *
-This (part of) documentation was generated from [src/transcriptions/transcriptor-abbrevs2text.lexc](https://github.com/giellalt/lang-epo/blob/main/src/transcriptions/transcriptor-abbrevs2text.lexc)
+This (part of) documentation was generated from [src/fst/transcriptions/transcriptor-abbrevs2text.lexc](https://github.com/giellalt/lang-epo/blob/main/src/fst/transcriptions/transcriptor-abbrevs2text.lexc)
---
diff --git a/src-fst-transcriptions-transcriptor-numbers-digit2text.lexc.md b/src-fst-transcriptions-transcriptor-numbers-digit2text.lexc.md
new file mode 100644
index 0000000..b97976e
--- /dev/null
+++ b/src-fst-transcriptions-transcriptor-numbers-digit2text.lexc.md
@@ -0,0 +1,14 @@
+
+
+% komma% :, Root ;
+% tjuohkkis% :%. Root ;
+% kolon% :%: Root ;
+% sárggis% :%- Root ;
+% násti% :%* Root ;
+
+* * *
+
+This (part of) documentation was generated from [src/fst/transcriptions/transcriptor-numbers-digit2text.lexc](https://github.com/giellalt/lang-epo/blob/main/src/fst/transcriptions/transcriptor-numbers-digit2text.lexc)
+
+---
+
diff --git a/src-transcriptions-transcriptor-numbers-digit2text.lexc.md b/src-transcriptions-transcriptor-numbers-digit2text.lexc.md
deleted file mode 100644
index 8124ce8..0000000
--- a/src-transcriptions-transcriptor-numbers-digit2text.lexc.md
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-% komma% :, Root ;
-% tjuohkkis% :%. Root ;
-% kolon% :%: Root ;
-% sárggis% :%- Root ;
-% násti% :%* Root ;
-
-* * *
-
-This (part of) documentation was generated from [src/transcriptions/transcriptor-numbers-digit2text.lexc](https://github.com/giellalt/lang-epo/blob/main/src/transcriptions/transcriptor-numbers-digit2text.lexc)
-
----
-