diff --git a/.gitignore b/.gitignore
index 2b3328ec31523e1af1bd481074aff73e7b48e675..19859fc9aec4bf910da3ccb819e8c2c49cc6fb1b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,9 @@
 *.sty
 *.ins
 
+## Zip file
+*.zip
+
 ## Intermediate documents:
 *.hd
 *.dvi
@@ -28,6 +31,14 @@
 # *.eps
 *.pdf
 
+# Folders
+build/
+release/
+support/
+TDS/
+temp/
+mythesis/
+
 ## Bibliography auxiliary files (bibtex/biblatex/biber):
 *.bbl
 *.bcf
diff --git a/source/README-CTAN.md b/README-CTAN.md
similarity index 85%
rename from source/README-CTAN.md
rename to README-CTAN.md
index c80ddf04694ffaa40404d94c46abb26804ca51d5..77c522a2be50544ced39f2b42718361cabe763cd 100644
--- a/source/README-CTAN.md
+++ b/README-CTAN.md
@@ -6,8 +6,8 @@ The `njuthesis` class is intended for typesetting Nanjing University dissertatio
 Contributing
 ------------
 
-[Issues](https://github.com/nju-lug/NJUVisual/issues) and
-[pull requests](https://github.com/nju-lug/NJUVisual/pulls)
+[Issues](https://github.com/nju-lug/NJUThesis/issues) and
+[pull requests](https://github.com/nju-lug/NJUThesis/pulls)
 are always welcome.
 
 Wiki
diff --git a/build.lua b/build.lua
new file mode 100644
index 0000000000000000000000000000000000000000..9066e74c6556c3b03b7b6fd395b366b91fdc0b1a
--- /dev/null
+++ b/build.lua
@@ -0,0 +1,20 @@
+#!/usr/bin/env texlua
+
+-- Build script for njuthesis.
+-- run with `l3build`
+
+module = "njuthesis"
+
+checkengines = {"xetex", "luatex"}
+checkopts    = "-interaction=batchmode"
+
+ctanreadme = "README-CTAN.md"
+
+sourcefiles  = {"source/*.dtx"}
+installfiles = {"*.cls"}
+
+typesetexe   = "xelatex"
+typesetfiles = {"njuthesis.dtx"}
+
+unpackfiles = {"njuthesis.dtx"}
+unpackexe   = "xetex"