diff --git a/vector.lsp b/arrays/vector.lsp
similarity index 100%
rename from vector.lsp
rename to arrays/vector.lsp
diff --git a/error.lsp b/conditions/error.lsp
similarity index 100%
rename from error.lsp
rename to conditions/error.lsp
diff --git a/last.lsp b/cons/last.lsp
similarity index 100%
rename from last.lsp
rename to cons/last.lsp
diff --git a/set-difference.lsp b/cons/set-difference.lsp
similarity index 100%
rename from set-difference.lsp
rename to cons/set-difference.lsp
diff --git a/set-exclusive-or.lsp b/cons/set-exclusive-or.lsp
similarity index 100%
rename from set-exclusive-or.lsp
rename to cons/set-exclusive-or.lsp
diff --git a/subst-if-not.lsp b/cons/subst-if-not.lsp
similarity index 100%
rename from subst-if-not.lsp
rename to cons/subst-if-not.lsp
diff --git a/subst-if.lsp b/cons/subst-if.lsp
similarity index 100%
rename from subst-if.lsp
rename to cons/subst-if.lsp
diff --git a/subst.lsp b/cons/subst.lsp
similarity index 100%
rename from subst.lsp
rename to cons/subst.lsp
diff --git a/union.lsp b/cons/union.lsp
similarity index 100%
rename from union.lsp
rename to cons/union.lsp
diff --git a/ecase.lsp b/data-and-control-flow/ecase.lsp
similarity index 100%
rename from ecase.lsp
rename to data-and-control-flow/ecase.lsp
diff --git a/function.lsp b/data-and-control-flow/function.lsp
similarity index 100%
rename from function.lsp
rename to data-and-control-flow/function.lsp
diff --git a/if.lsp b/data-and-control-flow/if.lsp
similarity index 100%
rename from if.lsp
rename to data-and-control-flow/if.lsp
diff --git a/or.lsp b/data-and-control-flow/or.lsp
similarity index 100%
rename from or.lsp
rename to data-and-control-flow/or.lsp
diff --git a/progn.lsp b/data-and-control-flow/progn.lsp
similarity index 100%
rename from progn.lsp
rename to data-and-control-flow/progn.lsp
diff --git a/t.lsp b/data-and-control-flow/t.lsp
similarity index 100%
rename from t.lsp
rename to data-and-control-flow/t.lsp
diff --git a/typecase.lsp b/data-and-control-flow/typecase.lsp
similarity index 100%
rename from typecase.lsp
rename to data-and-control-flow/typecase.lsp
diff --git a/when.lsp b/data-and-control-flow/when.lsp
similarity index 100%
rename from when.lsp
rename to data-and-control-flow/when.lsp
diff --git a/time.lsp b/environment/time.lsp
similarity index 100%
rename from time.lsp
rename to environment/time.lsp
diff --git a/type.lsp b/eval-and-compile/type.lsp
similarity index 100%
rename from type.lsp
rename to eval-and-compile/type.lsp
diff --git a/roman-numerals.lsp b/format/roman-numerals.lsp
similarity index 100%
rename from roman-numerals.lsp
rename to format/roman-numerals.lsp
diff --git a/makefile b/makefile
index c23bbda406f67ede9cdf332bebee7f81679114e4..6b56c1d84c7cdfa8a3b6fb713ef34f0892653752 100644
--- a/makefile
+++ b/makefile
@@ -4,7 +4,7 @@
 # LISP=~/sbcl/src/runtime/sbcl --core ~/sbcl/output/sbcl.core --noinform
 # LISP=clisp -ansi -q
 # LISP=abcl
-# LISP=ecl
+LISP=ecl
 # LISP=/usr/local/lib/LispWorks/nongraphic-lispworks-4450
 # LISP=acl
 
diff --git a/cos.lsp b/numbers/cos.lsp
similarity index 100%
rename from cos.lsp
rename to numbers/cos.lsp
diff --git a/cosh.lsp b/numbers/cosh.lsp
similarity index 100%
rename from cosh.lsp
rename to numbers/cosh.lsp
diff --git a/plus.lsp b/numbers/plus.lsp
similarity index 100%
rename from plus.lsp
rename to numbers/plus.lsp
diff --git a/round.lsp b/numbers/round.lsp
similarity index 100%
rename from round.lsp
rename to numbers/round.lsp
diff --git a/sin.lsp b/numbers/sin.lsp
similarity index 100%
rename from sin.lsp
rename to numbers/sin.lsp
diff --git a/sinh.lsp b/numbers/sinh.lsp
similarity index 100%
rename from sinh.lsp
rename to numbers/sinh.lsp
diff --git a/sqrt.lsp b/numbers/sqrt.lsp
similarity index 100%
rename from sqrt.lsp
rename to numbers/sqrt.lsp
diff --git a/truncate.lsp b/numbers/truncate.lsp
similarity index 100%
rename from truncate.lsp
rename to numbers/truncate.lsp
diff --git a/use-package.lsp b/packages/use-package.lsp
similarity index 100%
rename from use-package.lsp
rename to packages/use-package.lsp
diff --git a/pprint-dispatch.lsp b/printer/pprint-dispatch.lsp
similarity index 100%
rename from pprint-dispatch.lsp
rename to printer/pprint-dispatch.lsp
diff --git a/print.lsp b/printer/print.lsp
similarity index 100%
rename from print.lsp
rename to printer/print.lsp
diff --git a/substitute-if-not.lsp b/sequences/substitute-if-not.lsp
similarity index 100%
rename from substitute-if-not.lsp
rename to sequences/substitute-if-not.lsp
diff --git a/substitute-if.lsp b/sequences/substitute-if.lsp
similarity index 100%
rename from substitute-if.lsp
rename to sequences/substitute-if.lsp
diff --git a/substitute.lsp b/sequences/substitute.lsp
similarity index 100%
rename from substitute.lsp
rename to sequences/substitute.lsp
diff --git a/read-char.lsp b/streams/read-char.lsp
similarity index 100%
rename from read-char.lsp
rename to streams/read-char.lsp
diff --git a/base-string.lsp b/strings/base-string.lsp
similarity index 100%
rename from base-string.lsp
rename to strings/base-string.lsp
diff --git a/string.lsp b/strings/string.lsp
similarity index 100%
rename from string.lsp
rename to strings/string.lsp
diff --git a/modules7.lsp b/system-construction/modules7.lsp
similarity index 100%
rename from modules7.lsp
rename to system-construction/modules7.lsp
diff --git a/modules8a.lsp b/system-construction/modules8a.lsp
similarity index 100%
rename from modules8a.lsp
rename to system-construction/modules8a.lsp
diff --git a/modules8b.lsp b/system-construction/modules8b.lsp
similarity index 100%
rename from modules8b.lsp
rename to system-construction/modules8b.lsp
diff --git a/typep.lsp b/types-and-classes/typep.lsp
similarity index 100%
rename from typep.lsp
rename to types-and-classes/typep.lsp