diff --git a/Makefile.am b/Makefile.am
index e49c19011905312385281aac58ccfcbdc1e48d8d..65c79ce631e9df83393ff016eca442f178a2972d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -11,3 +11,21 @@ endif
 endif
 
 ACLOCAL_AMFLAGS = -I m4
+
+EXTRA_DIST = \
+	matlab \
+	mex/sources \
+	uncrustify.cfg \
+	windows/dynare.nsi \
+	windows/fdl.txt \
+	windows/gpl.txt \
+	windows/README.txt
+
+clean-local:
+	rm -rf `find mex/sources -name *.o`
+
+dist-hook: clean-local
+	rm -rf `find $(distdir) -name .svn`
+	rm -rf `find $(distdir)/mex/sources -name *.o`
+	rm -f $(distdir)/matlab/dynare_m$(EXEEXT)
+	$(MKDIR_P) $(distdir)/mex/2007a $(distdir)/mex/2007b $(distdir)/mex/2009a-64bit $(distdir)/mex/octave
diff --git a/configure.ac b/configure.ac
index 1db11c6fd0c6e209a7eff70a3213420d67f8f45e..526991146e302b5ae044e75a79097852820a7879 100644
--- a/configure.ac
+++ b/configure.ac
@@ -31,6 +31,7 @@ CXXFLAGS="$CXXFLAGS -Wall"
 
 AC_PROG_RANLIB
 AC_PROG_LN_S
+AC_PROG_MKDIR_P
 
 AM_PROG_LEX
 AX_PROG_FLEX([], AC_MSG_ERROR([No suitable flex found.]))
@@ -92,27 +93,25 @@ AM_CONDITIONAL([HAVE_PTHREAD], [test x"$ax_pthread_ok" = "xyes"])
 
 AX_MATLAB
 
-if test "$ax_enable_matlab" = "yes"; then
+if test "x$ax_enable_matlab" = "xyes"; then
   AX_DOT_MEXEXT
   AX_MATLAB_ARCH
   AX_MATLAB_VERSION
 
   if test "x$ax_matlab_version_ok" = "xyes"; then
     AX_MEXOPTS
-  else
-    ax_mexopts_ok="no"
+
+    # Determine subdirectory of mex/ to be used for storing MATLAB MEX binaries
+    AX_COMPARE_VERSION([$MATLAB_VERSION], [le], [7.4], [DYNARE_MEXDIR="2007a"], [
+      DYNARE_MEXDIR="2007b"
+      if test ${MATLAB_ARCH%64} != ${MATLAB_ARCH}; then
+         AX_COMPARE_VERSION([$MATLAB_VERSION], [ge], [7.8], [DYNARE_MEXDIR="2009a-64bit"])
+      fi])
+    AC_SUBST([DYNARE_MEXDIR])
   fi
-  AM_CONDITIONAL([HAVE_MEXOPTS], [test "x$ax_matlab_version_ok" = "xyes" -a "x$ax_mexopts_ok" = "xyes" ])
-
-  # Determine subdirectory of mex/ to be used
-  AX_COMPARE_VERSION([$MATLAB_VERSION], [le], [7.4], [DYNARE_MEXDIR="2007a"], [
-    DYNARE_MEXDIR="2007b"
-    if test ${MATLAB_ARCH%64} != ${MATLAB_ARCH}; then
-       AX_COMPARE_VERSION([$MATLAB_VERSION], [ge], [7.8], [DYNARE_MEXDIR="2009a-64bit"])
-    fi
-  ])
-  AC_SUBST([DYNARE_MEXDIR])
 fi
+AM_CONDITIONAL([HAVE_MEXOPTS], [test "x$ax_enable_matlab" = "xyes" -a "x$ax_matlab_version_ok" = "xyes" -a "x$ax_mexopts_ok" = "xyes" ])
+
 
 AC_CONFIG_FILES([Makefile
                  preprocessor/macro/Makefile
@@ -203,7 +202,7 @@ else
   BUILD_MEX_OCTAVE="no (missing mkoctfile)"
 fi
 
-if test "x$ax_matlab_version_ok" = "xyes" -a "x$ax_mexopts_ok" = "xyes"; then
+if test "x$ax_enable_matlab" = "xyes" -a "x$ax_matlab_version_ok" = "xyes" -a "x$ax_mexopts_ok" = "xyes"; then
   BUILD_MEX_MATLAB="yes"
 else
   BUILD_MEX_MATLAB="no (missing MATLAB, or unknown version, or unknown architecture)"
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 736b5551a45948780907efa192cce9a17bf7d87e..ddaea449074e6efd69ae1915d8d74dcb6053a153 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -16,7 +16,7 @@ if HAVE_XSLT
 html-local: manual-html/index.html
 endif
 
-EXTRA_DIST = guide.tex guide.bbl bibmad.sty bvar-a-la-sims.tex manual.xml dynare_html.xsl manual.xml
+EXTRA_DIST = guide.tex guide.bbl bibmad.sty bvar-a-la-sims.tex manual.xml dynare_html.xsl dynare.xsl
 
 guide.pdf: guide.tex guide.bbl bibmad.sty
 	$(PDFLATEX) guide
@@ -26,7 +26,7 @@ bvar-a-la-sims.pdf: bvar-a-la-sims.tex
 	$(PDFLATEX) bvar-a-la-sims
 	$(PDFLATEX) bvar-a-la-sims
 
-manual-html/index.html: manual.xml dynare_html.xsl
+manual-html/index.html: manual.xml dynare_html.xsl dynare.xsl
 	$(XSLTPROC) -stringparam base.dir ./manual-html/ dynare_html.xsl manual.xml
 
 manual.pdf: manual.xml
diff --git a/doc/userguide/Makefile.am b/doc/userguide/Makefile.am
index 4b3434339638d5592608af471abf8bfdb3462706..37e537776c9737da97e7901dd3841e5c201f4618 100644
--- a/doc/userguide/Makefile.am
+++ b/doc/userguide/Makefile.am
@@ -6,15 +6,18 @@ endif
 
 SRC = UserGuide.tex Graphics/DynareTitle.pdf DynareBib.bib \
 	ch-intro.tex ch-inst.tex ch-solbase.tex ch-soladv.tex ch-estbase.tex \
-	ch-estadv.tex ch-solbeh.tex ch-estbeh.tex ch-ramsey.tex ch-trouble.tex
+	ch-estadv.tex ch-solbeh.tex ch-estbeh.tex ch-ramsey.tex ch-trouble.tex \
+	P_DynareStruct2.pdf P_flowest.pdf P_MH2.pdf P_ModStruct2.pdf P_ModStruct3.pdf \
+	P_ModStruct4.pdf P_ModStruct5.pdf P_SchorfMod.pdf P_ShockModel2.pdf
 
-EXTRA_DIST = $(SRC)
+EXTRA_DIST = $(SRC) Graphics models
 
 UserGuide.pdf: $(SRC)
 	$(PDFLATEX) UserGuide
 	$(BIBTEX) UserGuide
 	$(PDFLATEX) UserGuide
 	$(PDFLATEX) UserGuide
+	$(PDFLATEX) UserGuide
 
 clean-local:
 	rm -f *.log *.aux *.toc *.lof *.blg *.bbl *.out
diff --git a/dynare++/Makefile.am b/dynare++/Makefile.am
index 1497ae7224012afaf6d4a59cb270e7bde033cf44..b695ec8d9cb30b2b7cfcb97dbac60a0b68b670e5 100644
--- a/dynare++/Makefile.am
+++ b/dynare++/Makefile.am
@@ -1,2 +1,3 @@
 SUBDIRS = sylv parser/cc tl doc utils/cc integ kord src
 
+EXTRA_DIST = change_log.html c++lib.w
diff --git a/m4/ax_mexopts.m4 b/m4/ax_mexopts.m4
index a8fbf2fbe1f10a487c298dcce08d0bc29fbff95a..dc6f4ed0a52c3b7ba03b0e5e5abf566ae35f1ee1 100644
--- a/m4/ax_mexopts.m4
+++ b/m4/ax_mexopts.m4
@@ -21,6 +21,8 @@ AC_REQUIRE([AX_MEXEXT])
 AC_REQUIRE([AX_MATLAB_ARCH])
 AC_REQUIRE([AX_MATLAB_VERSION])
 
+AC_MSG_CHECKING([for options to compile MEX for MATLAB])
+
 MATLAB_CPPFLAGS="-I$MATLAB/extern/include"
 
 case ${MATLAB_ARCH} in
@@ -64,6 +66,12 @@ AX_COMPARE_VERSION([$MATLAB_VERSION], [ge], [7.8], [MATLAB_DEFS="$MATLAB_DEFS -D
 # blas.h and lapack.h appeared in MATLAB 7.5
 AX_COMPARE_VERSION([$MATLAB_VERSION], [lt], [7.5], [MATLAB_DEFS="$MATLAB_DEFS -DNO_BLAS_H -DNO_LAPACK_H"])
 
+if test "$ax_mexopts_ok" = "yes"; then
+  AC_MSG_RESULT([ok])
+else
+  AC_MSG_RESULT([unknown])
+fi
+
 AC_SUBST([MATLAB_CPPFLAGS])
 AC_SUBST([MATLAB_DEFS])
 AC_SUBST([MATLAB_CC])
diff --git a/mex/build/Makefile.am b/mex/build/Makefile.am
index ff682122265ecade910fe1297eca1ef186a3df94..feb6abab357990f157ad190574aab47cd7f92820 100644
--- a/mex/build/Makefile.am
+++ b/mex/build/Makefile.am
@@ -7,9 +7,3 @@ endif
 if HAVE_MEXOPTS
 SUBDIRS += mjdgges/matlab kronecker/matlab gensylv/matlab bytecode/matlab
 endif
-
-EXTRA_DIST = \
-	../sources/matlab_versions_compatibility.h \
-	../sources/build_matlab.m \
-	../sources/build_matlab_multithread.m \
-	../sources/build_octave.m
diff --git a/mex/build/bytecode.am b/mex/build/bytecode.am
index 4b8effa9debf4886bd78e6a3ee4a667b2254aacd..cef4d9912969333c02dcd8de962d63305240004a 100644
--- a/mex/build/bytecode.am
+++ b/mex/build/bytecode.am
@@ -5,7 +5,7 @@ noinst_PROGRAMS = bytecode
 # bytecode_CPPFLAGS interacts badly with VPATH
 CPPFLAGS += -I$(top_srcdir)/mex/sources/bytecode -I$(top_srcdir)/preprocessor
 
-bytecode_SOURCES = \
+nodist_bytecode_SOURCES = \
 	bytecode.cc \
 	Interpreter.cc \
 	Mem_Mngr.cc \
diff --git a/mex/build/gensylv.am b/mex/build/gensylv.am
index 43437fa98fce3e726cb16ae90f0af10ca768d912..2bc0c88f5ee42014d38706ef07020e7bc917e734 100644
--- a/mex/build/gensylv.am
+++ b/mex/build/gensylv.am
@@ -5,7 +5,7 @@ noinst_PROGRAMS = gensylv
 # Can't use gensylv_CPPFLAGS, because it interacts badly with VPATH
 CPPFLAGS += -DMATLAB -I$(top_srcdir)/mex/sources/gensylv/cc
 
-gensylv_SOURCES = \
+nodist_gensylv_SOURCES = \
 	gensylv.cpp \
 	BlockDiagonal.cpp \
 	GeneralMatrix.cpp \
diff --git a/mex/build/kronecker.am b/mex/build/kronecker.am
index e9d4514a7ef8ef0251312d16f65849356a59225f..3c32150dc4e7b2ccb62a7dc5e79b4c214b1c1d7c 100644
--- a/mex/build/kronecker.am
+++ b/mex/build/kronecker.am
@@ -2,5 +2,5 @@ VPATH = $(top_srcdir)/mex/sources/kronecker
 
 noinst_PROGRAMS = sparse_hessian_times_B_kronecker_C A_times_B_kronecker_C
 
-sparse_hessian_times_B_kronecker_C_SOURCES = sparse_hessian_times_B_kronecker_C.cc
-A_times_B_kronecker_C_SOURCES = A_times_B_kronecker_C.cc
+nodist_sparse_hessian_times_B_kronecker_C_SOURCES = sparse_hessian_times_B_kronecker_C.cc
+nodist_A_times_B_kronecker_C_SOURCES = A_times_B_kronecker_C.cc
diff --git a/mex/build/mjdgges.am b/mex/build/mjdgges.am
index 4d5af3f86ef22f92d578fdd85568f0567188233f..05fea7255b06beeec1dd6b30704c9dd323686561 100644
--- a/mex/build/mjdgges.am
+++ b/mex/build/mjdgges.am
@@ -2,4 +2,4 @@ VPATH = $(top_srcdir)/mex/sources/mjdgges
 
 noinst_PROGRAMS = mjdgges
 
-mjdgges_SOURCES = mjdgges.c
+nodist_mjdgges_SOURCES = mjdgges.c
diff --git a/preprocessor/Makefile.am b/preprocessor/Makefile.am
index ff9428cd122c4288c63caeebfdaa480afb54be6f..35e2e8174d493c0da9cf8e58be4e7a2c6e13f2a8 100644
--- a/preprocessor/Makefile.am
+++ b/preprocessor/Makefile.am
@@ -72,3 +72,5 @@ endif
 clean-local:
 	cd ../matlab && rm -f $(PROGRAMS)
 	rm -rf doc/html/
+
+EXTRA_DIST = Doxyfile