From 5e47fbe9f5a8e10458a9d737d1c35cff2eae6791 Mon Sep 17 00:00:00 2001
From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Mon, 2 Feb 1998 12:05:04 +0100
Subject: [PATCH] release: 0.1.43

---
 AUTHORS.text                                  | 132 ------------
 AUTHORS.txt                                   | 132 ++++++++++++
 Documentation/AUTHORS.pod                     |  11 +-
 Documentation/INSTALL.pod                     |   4 +-
 Documentation/Makefile                        |   8 +-
 Documentation/Rules.make                      |   8 +-
 Documentation/index.pod                       |  12 +-
 Documentation/links.pod                       |  12 +-
 INSTALL.text => INSTALL.txt                   | 134 ++++++-------
 NEWS                                          |  23 +++
 TODO                                          |   6 +-
 VERSION                                       |   2 +-
 bin/clean-fonts.sh                            |   4 -
 bin/conflily.sh                               |   2 +-
 bin/make-patch.py                             |   2 +-
 bin/make-website.py                           |  88 ++++----
 configure                                     |  10 +-
 configure.in                                  |  10 +-
 debian/out/dummy.dep                          |   0
 flower/NEWS                                   |   4 +-
 flower/VERSION                                |   2 +-
 flower/cpu-timer.cc                           |   6 +
 flower/libc-extension.cc                      |  15 +-
 init/paper11.ly                               |   1 +
 init/paper13.ly                               |   1 +
 init/paper16.ly                               |   1 +
 init/paper20.ly                               |   1 +
 init/paper26.ly                               |   1 +
 input/Makefile                                |   2 +-
 input/TODO                                    |   5 +
 input/denneboom.ly                            |  68 +++++++
 lib/binary-source-file.cc                     |  42 ++--
 lib/duration-convert.cc                       | 188 +++++++++---------
 lib/duration.cc                               |  30 +--
 lib/includable-lexer.cc                       |  52 ++---
 lib/include/binary-source-file.hh             |   8 +-
 lib/include/duration-convert.hh               |  54 ++---
 lib/include/duration.hh                       |  16 +-
 lib/include/file-storage.hh                   |  43 +---
 lib/include/includable-lexer.hh               |  20 +-
 lib/include/input.hh                          |  16 +-
 lib/include/mapped-file-storage.hh            |  40 ++++
 lib/include/moment.hh                         |   2 +-
 lib/include/plet.hh                           |   6 +-
 lib/include/simple-file-storage.hh            |  31 +++
 lib/include/source-file.hh                    |  32 +--
 lib/include/source.hh                         |  18 +-
 lib/include/warn.hh                           |   4 +-
 ...indhoos-suck-suck-suck-thank-you-cygnus.hh |   6 +-
 lib/input.cc                                  |  28 +--
 lib/mapped-file-storage.cc                    |  80 ++++++--
 lib/moment.cc                                 |   4 +-
 lib/plet.cc                                   |   8 +-
 lib/simple-file-storage.cc                    |  28 +--
 lib/source-file.cc                            |  72 +++----
 lib/source.cc                                 |  26 +--
 lib/template.cc                               |   4 +-
 lib/warn.cc                                   |  12 +-
 ...indhoos-suck-suck-suck-thank-you-cygnus.cc |  28 +--
 lily/VERSION                                  |   2 +-
 lily/break.cc                                 |  78 ++++----
 lily/debug.cc                                 |   3 -
 lily/gourlay-breaking.cc                      |  50 +++--
 lily/include/break.hh                         |   8 +-
 lily/include/main.hh                          |   1 +
 lily/include/paper-def.hh                     |  35 ++--
 lily/include/plet-spanner.hh                  |   6 +-
 lily/include/stem.hh                          |   3 +-
 lily/include/translator.hh                    |  13 +-
 lily/lexer.l                                  |   1 +
 lily/main.cc                                  |  23 ++-
 lily/my-lily-lexer.cc                         |   1 +
 lily/paper-def.cc                             |  17 +-
 lily/parser.y                                 |  32 ++-
 lily/plet-engraver.cc                         |   3 +-
 lily/plet-spanner.cc                          |  34 ++--
 lily/rest-collision.cc                        |   2 +-
 lily/stem-info.cc                             |   4 +-
 lily/stem.cc                                  |   7 +-
 lily/translator-ctors.cc                      |  22 ++
 lily/translator.cc                            |  24 +--
 lily/word-wrap.cc                             |   6 +-
 make/Makefile                                 |   2 +-
 make/Rules.make                               |   2 +-
 make/Toplevel.make.in                         |  10 +-
 make/lelievijver.lsm                          |   8 +-
 make/lilypond.lsm                             |   8 +-
 make/lilypond.spec                            |   8 +-
 mudela-mode.el                                |   2 +-
 mutopia/J.S.Bach/Makefile                     |  23 +++
 mutopia/J.S.Bach/out/dummy.dep                |   0
 {input => mutopia/J.S.Bach}/scsii-menuetto.ly |   0
 .../J.S.Bach}/scsii-menuetto.tex              |   0
 {input => mutopia/J.S.Bach}/wtk1-fugue1.ly    |   0
 {input => mutopia/J.S.Bach}/wtk1-fugue2.ly    |   0
 {input => mutopia/J.S.Bach}/wtk1-prelude1.ly  |   0
 .../J.S.Bach}/wtk1-prelude2.ly.m4             |   0
 mutopia/Makefile                              |  21 ++
 mutopia/TODO                                  |   3 +
 {input => mutopia}/gallina.ly                 |   0
 {input => mutopia}/gallina.tex                |   0
 mutopia/out/dummy.dep                         |   0
 {input => mutopia}/standchen-16.ly            |   0
 {input => mutopia}/standchen-16.tex           |   0
 {input => mutopia}/standchen-20.ly            |   0
 {input => mutopia}/standchen-20.tex           |   0
 {input => mutopia}/standchen.ly               |   0
 {input => mutopia}/standje.ly                 | 107 ++++++----
 tex/lily-ps-defs.tex                          |  15 +-
 109 files changed, 1274 insertions(+), 915 deletions(-)
 delete mode 100644 AUTHORS.text
 create mode 100644 AUTHORS.txt
 rename INSTALL.text => INSTALL.txt (59%)
 create mode 100644 debian/out/dummy.dep
 create mode 100644 input/TODO
 create mode 100644 input/denneboom.ly
 create mode 100644 lib/include/mapped-file-storage.hh
 create mode 100644 lib/include/simple-file-storage.hh
 create mode 100644 mutopia/J.S.Bach/Makefile
 create mode 100644 mutopia/J.S.Bach/out/dummy.dep
 rename {input => mutopia/J.S.Bach}/scsii-menuetto.ly (100%)
 rename {input => mutopia/J.S.Bach}/scsii-menuetto.tex (100%)
 rename {input => mutopia/J.S.Bach}/wtk1-fugue1.ly (100%)
 rename {input => mutopia/J.S.Bach}/wtk1-fugue2.ly (100%)
 rename {input => mutopia/J.S.Bach}/wtk1-prelude1.ly (100%)
 rename {input => mutopia/J.S.Bach}/wtk1-prelude2.ly.m4 (100%)
 create mode 100644 mutopia/Makefile
 create mode 100644 mutopia/TODO
 rename {input => mutopia}/gallina.ly (100%)
 rename {input => mutopia}/gallina.tex (100%)
 create mode 100644 mutopia/out/dummy.dep
 rename {input => mutopia}/standchen-16.ly (100%)
 rename {input => mutopia}/standchen-16.tex (100%)
 rename {input => mutopia}/standchen-20.ly (100%)
 rename {input => mutopia}/standchen-20.tex (100%)
 rename {input => mutopia}/standchen.ly (100%)
 rename {input => mutopia}/standje.ly (69%)

diff --git a/AUTHORS.text b/AUTHORS.text
deleted file mode 100644
index b2cc8a8a41..0000000000
--- a/AUTHORS.text
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-
-AUTHORS(1)            LilyPond documentation           AUTHORS(1)
-
-
-NNNNAAAAMMMMEEEE
-       AUTHORS - who did what on GNU LilyPond?
-
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       This file lists authors of GNU LilyPond, and what they
-       wrote.
-
-AAAAUUUUTTTTHHHHOOOORRRRSSSS
-       +o   Han-Wen Nienhuys <hanwen@stack.nl>,
-           http://www.stack.nl/~hanwen
-
-           Main author.
-
-       +o Jan Nieuwenhuizen <jan@digicash.com>,
-           http://www.digicash.com/~jan
-           Main author
-
-CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSSSS
-       +o   Mats Bengtsson <matsb@s3.kth.se>, parts of clef-
-           reg.cc, clef-item.cc swedish notenames, testing,
-           general comments, duration logs/longa/brevis etc
-
-       +o Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>,
-           TeX titling and lytodvi.sh
-
-       +o Shay Rojanski
-           Some mudela source.
-
-       +o Werner Lemberg <xlwy01@uxp1.hrz.uni-dortmund.de>,
-           misc bugfixes, some Beam and Stem code.
-
-       +o Donald Ervin Knuth, http://www.cs.stanford.edu/~?
-           mf/ital-*.mf (these were taken from the CM fonts)
-
-       +o Alexandre Oliva <oliva@dcc.unicamp.br>,
-           http://sunsite.unicamp.br/?
-           testing
-
-       +o Anthony Fok <foka@debian.org>,
-           debian package: debian/*
-
-       +o Franc,ois Pinard <pinard@iro.umontreal.ca>,
-           Documentation/Vocab*, internationalization stuff
-
-       +o  Neil Jerram <nj104@cus.cam.ac.uk>.
-           Documentation/Vocab*
-
-       +o David R. Linn <drl@vuse.vanderbilt.edu>,
-           Mailing list maintenance.
-
-       Your name could be here! If you want to help, then take a
-       look at the SMALLISH PROJECTS section of in the file _T_O_D_O.
-       Some do not involve coding C++
-
-
-
-
-5/Jan/98                 LilyPond 0.1.42                        1
-
-
-
-
-
-AUTHORS(1)            LilyPond documentation           AUTHORS(1)
-
-
-       [And of course we sincerely thank J.S.Bach, F.Schubert, T.
-       Merula and W.A.Mozart for their beautiful music]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-5/Jan/98                 LilyPond 0.1.42                        2
-
-
diff --git a/AUTHORS.txt b/AUTHORS.txt
new file mode 100644
index 0000000000..05b01d95ed
--- /dev/null
+++ b/AUTHORS.txt
@@ -0,0 +1,132 @@
+
+
+
+AUTHORS(1)            LilyPond documentation           AUTHORS(1)
+
+
+NAME
+       AUTHORS - who did what on GNU LilyPond?
+
+DESCRIPTION
+       This file lists authors of GNU LilyPond, and what they
+       wrote.
+
+AUTHORS
+       o Han-Wen Nienhuys <hanwen@stack.nl>,
+           http://www.stack.nl/~hanwen
+           Main author.
+
+       o Jan Nieuwenhuizen <jan@digicash.com>,
+           http://www.digicash.com/~jan
+           Main author
+
+CONTRIBUTORS
+       o Mats Bengtsson <matsb@s3.kth.se>,
+           parts of clef-reg.cc, clef-item.cc swedish notenames,
+           testing, general comments, duration logs/longa/brevis
+           etc
+
+       o Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>,
+           TeX titling and lytodvi.sh
+
+       o Shay Rojanski
+           Some mudela source.
+
+       o Werner Lemberg <xlwy01@uxp1.hrz.uni-dortmund.de>,
+           misc bugfixes, some Beam and Stem code.
+
+       o Donald Ervin Knuth, http://www.cs.stanford.edu/~?
+           mf/ital-*.mf (these were taken from the CM fonts)
+
+       o Alexandre Oliva <oliva@dcc.unicamp.br>,
+           http://sunsite.unicamp.br/?
+           testing
+
+       o Anthony Fok <foka@debian.org>,
+           debian package: debian/*
+
+       o Franc,ois Pinard <pinard@iro.umontreal.ca>,
+           Documentation/Vocab*, internationalization stuff
+
+       o  Neil Jerram <nj104@cus.cam.ac.uk>.
+           Documentation/Vocab*
+
+       o David R. Linn <drl@vuse.vanderbilt.edu>,
+           Mailing list maintenance.
+
+       Your name could be here! If you want to help, then take a
+       look at the SMALLISH PROJECTS section of in the file TODO.
+       Some do not involve coding C++
+
+
+
+
+2/Feb/98                 LilyPond 0.1.43                        1
+
+
+
+
+
+AUTHORS(1)            LilyPond documentation           AUTHORS(1)
+
+
+       [And of course we sincerely thank J.S.Bach, F.Schubert, T.
+       Merula and W.A.Mozart for their beautiful music]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2/Feb/98                 LilyPond 0.1.43                        2
+
+
diff --git a/Documentation/AUTHORS.pod b/Documentation/AUTHORS.pod
index e922f5c3d3..ef6370c88a 100644
--- a/Documentation/AUTHORS.pod
+++ b/Documentation/AUTHORS.pod
@@ -10,9 +10,7 @@ This file lists authors of GNU LilyPond, and what they wrote.
 
 =over 4
 
-=item *
-
-Han-Wen Nienhuys <hanwen@stack.nl>, http://www.stack.nl/~hanwen
+=item * Han-Wen Nienhuys <hanwen@stack.nl>, http://www.stack.nl/~hanwen
 
 Main author.
 
@@ -26,11 +24,10 @@ Main author
 
 =over 4
 
-=item *
+=item * Mats Bengtsson <matsb@s3.kth.se>,
 
-Mats Bengtsson <matsb@s3.kth.se>, parts of clef-reg.cc, clef-item.cc
-swedish notenames, testing, general comments, duration
-logs/longa/brevis etc
+parts of clef-reg.cc, clef-item.cc swedish notenames, testing, general
+comments, duration logs/longa/brevis etc
 
 =item * Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>,
 
diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod
index bca2cc23f9..d724945a9a 100644
--- a/Documentation/INSTALL.pod
+++ b/Documentation/INSTALL.pod
@@ -24,8 +24,8 @@ For compilation you need.
 
 =item *
 
-A GNU system: GNU LilyPond is known to run on these GNU systems:
-Linux, FreeBSD, AIX, Digital Unix and Solaris.
+A GNU system: GNU LilyPond is known to run on these GNU systems: Linux
+(PPC, intel), FreeBSD, AIX, NeXTStep, Digital Unix and Solaris.
 
 If you have the Cygnus WINDOWS32 port of the GNU utils, it will even
 work in Windows NT/95, but we don't promise to support it.
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 132c161c0b..48df92b09d 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -23,7 +23,7 @@ include ./Rules.make
 #
 DOCFILES = $(wildcard *.doc)
 OUTPODFILES = $(addprefix $(outdir)/,$(PODFILES))
-TEXTFILES = $(OUTPODFILES:.pod=.text)
+TEXTFILES = $(OUTPODFILES:.pod=.txt)
 GROFFFILES = $(OUTPODFILES:.pod=.1)
 HTMLFILES = $(OUTPODFILES:.pod=.html)
 DVIFILES = $(addprefix $(outdir)/, $(DOCFILES:.doc=.dvi))
@@ -58,9 +58,9 @@ include $(depth)/make/Rules.make
 #
 
 localclean:
-	rm -f $(TEXTFILES) $(HTMLFILES) $(GROFFFILES)
-	rm -f $(outdir)/*  # clean the make-website stuff
-	rm -f $(outdir)/docxx/*  # clean the make-website stuff	
+	rm -f `find $(outdir)`
+
+
 
 MAN1FILES = lilypond convert-mudela mi2mu mudela-book
 MAN1GROFF = $(addprefix $(outdir)/, $(addsuffix .1,$(MAN1FILES)))
diff --git a/Documentation/Rules.make b/Documentation/Rules.make
index eac8dfc8f2..88ab6fb34a 100644
--- a/Documentation/Rules.make
+++ b/Documentation/Rules.make
@@ -1,7 +1,7 @@
 # special rules for the documentation section.
 # There are too many to add to the general rules
 
-.SUFFIXES: .pod .text .1  .html
+.SUFFIXES: .pod .txt .1  .html
 
 
 $(outdir)/%.gif: %.xpm
@@ -18,10 +18,10 @@ $(outdir)/%.dvi: $(outdir)/%.mudtex
 $(outdir)/%.mudtex: %.doc
 	$(binout)/mudela-book --outdir=$(outdir)/ --outname=$(notdir $@) $<
 
-$(outdir)/%.text: $(outdir)/%.1
-	groff -man -Tascii $< > $@
+$(outdir)/%.txt: $(outdir)/%.1
+	troff -man -Tascii $< | grotty -b -u -o > $@
 
-$(depth)/%.text: $(outdir)/%.text
+$(depth)/%.txt: $(outdir)/%.txt
 	cp $< $@
 
 do_pod2html=$(pod2html) $<
diff --git a/Documentation/index.pod b/Documentation/index.pod
index 595170662b..865b5e2dcf 100644
--- a/Documentation/index.pod
+++ b/Documentation/index.pod
@@ -29,12 +29,20 @@ and the ftp site.
 
 =head2 Examples
 
-<a href=example_output.html
+<a href=examples_output.html
 >
-examples of what LilyPond can do: MIDI, PS, .gif and input.
+short examples of what LilyPond can do: MIDI, PS, .gif and input.
 </a
 >
 
+<a href=mutopiaexamples_output.html 
+>
+examples of what LilyPond can do
+with real music: MIDI, PS, .gif and input 
+</a
+>
+
+
 =head2 NEWS! 
 
 This is what the latest version brings:
diff --git a/Documentation/links.pod b/Documentation/links.pod
index 80757ffed3..5caa99294d 100644
--- a/Documentation/links.pod
+++ b/Documentation/links.pod
@@ -25,6 +25,10 @@ LilyPond sources.
 
 An enormous collection of music related URLs
 
+=item http://www.ram.org/ramblings/philosophy/fmp.html
+
+Musings on free music, plus hints how to record your own (free) music.
+
 =back
 
 =head2 Ftp 
@@ -88,9 +92,11 @@ mailing list have been setup:
 
 A moderated list for information on the GNU Music project, to
 subscribe: send mail with subject "subscribe" to
-info-gnu-music-request@gnu.org.  As this list is moderated, normal
-people should ask to drl@gnu.org or hanwen@stack.nl to forward
-announces instead of sending it to info-gnu-music@gnu.org
+info-gnu-music-request@gnu.org.  
+
+As this list is moderated, normal people should ask to drl@gnu.org or
+hanwen@stack.nl to forward announces instead of sending it to
+info-gnu-music@gnu.org
 
 =item help-gnu-music@gnu.org
 
diff --git a/INSTALL.text b/INSTALL.txt
similarity index 59%
rename from INSTALL.text
rename to INSTALL.txt
index 53587f1d31..4e5b681528 100644
--- a/INSTALL.text
+++ b/INSTALL.txt
@@ -4,14 +4,14 @@
 INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
-NNNNAAAAMMMMEEEE
+NAME
        INSTALL - installing GNU LilyPond
 
-DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
+DESCRIPTION
        This page documents installation and compilation of GNU
        LilyPond
 
-AAAABBBBSSSSTTTTRRRRAAAACCCCTTTT
+ABSTRACT
        You do something which looks remotely like
 
                configure
@@ -20,48 +20,48 @@ AAAABBBBSSSSTTTTRRRRAAAACCCCTTTT
 
        The detailed instructions follow here.
 
-PPPPRRRREEEERRRREEEEQQQQUUUUIIIISSSSIIIITTTTEEEESSSS
+PREREQUISITES
        For compilation you need.
 
-       +o    A GNU system: GNU LilyPond is known to run on these
-            GNU systems: Linux, FreeBSD, AIX, Digital Unix and
-            Solaris.
+       o    A GNU system: GNU LilyPond is known to run on these
+            GNU systems: Linux (PPC, intel), FreeBSD, AIX,
+            NeXTStep, Digital Unix and Solaris.
 
             If you have the Cygnus WINDOWS32 port of the GNU
             utils, it will even work in Windows NT/95, but we
             don't promise to support it.
 
-       +o    GNU C++ v2.7 or better, with libg++ installed.
+       o    GNU C++ v2.7 or better, with libg++ installed.
             Version 2.7.2 or better recommended.
 
-       +o    GNU make.
+       o    GNU make.
 
-       +o    Flex (2.5.1 or better).
+       o    Flex (2.5.1 or better).
 
-       +o    Bison. (Version 1.25 or better)
+       o    Bison. (Version 1.25 or better)
 
-RRRRUUUUNNNNNNNNIIIINNNNGGGG
+RUNNING
        GNU LilyPond does use a lot of resources. For operation
        you need the following:
 
-       +o    TeX
+       o    TeX
 
-       +o    A PostScript printer and/or viewer (such as
+       o    A PostScript printer and/or viewer (such as
             Ghostscript) is strongly recommended.  Xdvi will show
             all embedded PostScript too if you have Ghostscript
             installed.
 
-RRRREEEECCCCOOOOMMMMMMMMEEEENNNNDDDDEEEEDDDD
+RECOMMENDED
        Although not strictly necessary, these are recommended to
        have.
 
-       +o    Perl-5.  Most documentation was created with the
+       o    Perl-5.  Most documentation was created with the
             perl's Plain Old Documentation. (I use 5.003)
 
 
 
 
-11/Jan/98                LilyPond 0.1.42                        1
+2/Feb/98                 LilyPond 0.1.43                        1
 
 
 
@@ -70,17 +70,17 @@ RRRREEEECCCCOOOOMMMMMMMMEEEENNNNDDDDEEEEDDDD
 INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
-       +o    Python.  Although perl is nice, python is better.  We
+       o    Python.  Although perl is nice, python is better.  We
             will shift towards python for build scripts
 
-       +o    GNU find
+       o    GNU find
 
-       +o    A fast computer (a full page of music typically takes
-            1 minute on my 486/133, using the --------eeeennnnaaaabbbblllleeee----cccchhhheeeecccckkkkiiiinnnngggg
+       o    A fast computer (a full page of music typically takes
+            1 minute on my 486/133, using the --enable-checking
             compile. It's lot slower than most MusiXTeX
             preprocessors)
 
-CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG aaaannnndddd CCCCOOOOMMMMPPPPIIIILLLLIIIINNNNGGGG
+CONFIGURING and COMPILING
        to install GNU LilyPond, simply type:
 
                configure
@@ -99,8 +99,8 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a
                /usr/lib/texmf/texmf/tex/lilypond/*
 
        The TeX include directory is detected dynamically, but it
-       can be adjusted with --------eeeennnnaaaabbbblllleeee----tttteeeexxxx----pppprrrreeeeffffiiiixxxx and --------eeeennnnaaaabbbblllleeee----tttteeeexxxx----
-       ddddiiiirrrr. The above assumes that you are root and have the GNU
+       can be adjusted with --enable-tex-prefix and --enable-tex-
+       dir. The above assumes that you are root and have the GNU
        development tools, and your make is GNU make.  If this is
        not the case, you can adjust your environment variables to
        your taste:
@@ -111,7 +111,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a
        CPPFLAGS are the preprocessor flags.
 
        the configure script is Cygnus configure, and it will
-       accept --------hhhheeeellllpppp. If you are not root, you will probably have
+       accept --help. If you are not root, you will probably have
        to make it with
 
                configure --prefix=/home/me_myself_and_I/
@@ -119,7 +119,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a
        In this case, you will have to set MFINPUTS, and TEXINPUTS
        accordingly.
 
-       If you want to install GNU LilyPond in _/_u_s_r_/_l_o_c_a_l, and
+       If you want to install GNU LilyPond in /usr/local, and
        your TeX has no default hooks for local stuff (mine is
        broken too), you can do:
 
@@ -127,7 +127,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a
 
 
 
-11/Jan/98                LilyPond 0.1.42                        2
+2/Feb/98                 LilyPond 0.1.43                        2
 
 
 
@@ -144,33 +144,33 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
        other options include:
 
-       --------eeeennnnaaaabbbblllleeee----sssshhhhaaaarrrreeeedddd
+       --enable-shared
            Make a shared library (gnu/linux, solaris (?) only )
 
-       --------eeeennnnaaaabbbblllleeee----pppprrrriiiinnnnttttiiiinnnngggg
-           Enable debugging print routines (lilypond ----dddd option)
+       --enable-printing
+           Enable debugging print routines (lilypond -d option)
 
-       --------eeeennnnaaaabbbblllleeee----ooooppppttttiiiimmmmiiiisssseeee
-           Set maximum optimisation: compile with ----OOOO2222
+       --enable-optimise
+           Set maximum optimisation: compile with -O2
 
-       --------eeeennnnaaaabbbblllleeee----pppprrrrooooffffiiiilllliiiinnnngggg
+       --enable-profiling
            Compile with support for profiling
 
-       --------eeeennnnaaaabbbblllleeee----tttteeeexxxx----pppprrrreeeeffffiiiixxxx
+       --enable-tex-prefix
            Set the directory where TeX and Metafont live
 
-       --------eeeennnnaaaabbbblllleeee----tttteeeexxxx----ddddiiiirrrr
+       --enable-tex-dir
            Set then directory TeX input is in (detected as a
            subdir of tex-prefix)
 
-       --------eeeennnnaaaabbbblllleeee----mmmmffff----ddddiiiirrrr
+       --enable-mf-dir
            Set the directory mf input is in (idem)
 
-       --------eeeennnnaaaabbbblllleeee----oooouuuutttt----ddddiiiirrrr
+       --enable-out-dir
            Set the directory for machine generated output.
 
-       All options are documented in the _c_o_n_f_i_g_u_r_e help The
-       option --------eeeennnnaaaabbbblllleeee----ooooppppttttiiiimmmmiiiisssseeee is recommended for Real Life
+       All options are documented in the configure help The
+       option --enable-optimise is recommended for Real Life
        usage.
 
        If you do
@@ -179,21 +179,21 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
        everything will be compiled, but nothing will be
        installed.  The resulting binaries can be found in the
-       subdirectories _o_u_t_/ (which contain all files generated
+       subdirectories out/ (which contain all files generated
        during compilation).
 
-       BBBBuuuuiiiillllddddiiiinnnngggg ffffoooorrrr mmmmuuuullllttttiiiipppplllleeee hhhhoooossssttttssss
+       Building for multiple hosts
 
        LilyPond does not follow the GNU standards when it comes
-       to configuring and making Makefiles. In LilyPond, _m_a_k_e
-       generates _a_l_l output in output directories (called _o_u_t_/,
+       to configuring and making Makefiles. In LilyPond, make
+       generates all output in output directories (called out/,
        by default).  You can have multiple compiles from the same
        source-tree, by overriding the setting for the output
        directory.
 
 
 
-11/Jan/98                LilyPond 0.1.42                        3
+2/Feb/98                 LilyPond 0.1.43                        3
 
 
 
@@ -222,7 +222,7 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
        problem; I never do make install. My prefix dirs are
        linked back to my source directory.
 
-IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG
+INSTALLING
        If you have done a successful make, then a simple
 
                make install
@@ -231,17 +231,17 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG
 
        If you are doing an upgrade, please remember to remove
        obsolete .pk and .tfm files of the fonts.  A script has
-       been provided to do the work, see _b_i_n_/_c_l_e_a_n_-_f_o_n_t_s_._s_h.
+       been provided to do the work, see bin/clean-fonts.sh.
 
-CCCCAAAAVVVVEEEEAAAATTTTSSSS
-       +o    The -O2 option to gcc triggers a gcc bug on DEC Alpha
+CAVEATS
+       o    The -O2 option to gcc triggers a gcc bug on DEC Alpha
             in dstream.cc. You should turn off this flag for this
             file.
 
-       +o    Perl5.003 and Perl5.004 use different syntax for
+       o    Perl5.003 and Perl5.004 use different syntax for
             pod2html.
 
-EEEEXXXXAAAAMMMMPPPPLLLLEEEE
+EXAMPLE
        This is what I type in my xterm:
 
                lilypond someinput.ly
@@ -259,7 +259,7 @@ EEEEXXXXAAAAMMMMPPPPLLLLEEEE
 
 
 
-11/Jan/98                LilyPond 0.1.42                        4
+2/Feb/98                 LilyPond 0.1.43                        4
 
 
 
@@ -285,20 +285,20 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
        Check out the input files, some of them have comments
        Please refer to the man page for more information.
 
-RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX
+REDHAT LINUX
        RedHat Linux users should be able to get a RPM. A spec
-       file is in _m_a_k_e_/_o_u_t_/_l_i_l_y_p_o_n_d_._s_p_e_c. You should be able to
+       file is in make/out/lilypond.spec. You should be able to
        create an rpm as a normal user. Be sure you have a
-       _~_/_._r_p_m_r_c, and edit the RPM-dir in _V_a_r_i_a_b_l_e_s_._m_a_k_e. (If you
+       ~/.rpmrc, and edit the RPM-dir in Variables.make. (If you
        create the RPM as a normal user the permissions will not
        be set correctly, unfortunately)
 
-DDDDEEEEBBBBIIIIAAAANNNN GGGGNNNNUUUU////LLLLIIIINNNNUUUUXXXX
+DEBIAN GNU/LINUX
        A Debian package is also available; contact Anthony Fok
        <foka@debian.org>.  The build scripts are in the
        subdirectory debian/
 
-WWWWIIIINNNNDDDDOOOOWWWWSSSS NNNNTTTT////99995555
+WINDOWS NT/95
        So, you're stuck with Windows, eh?  Well, don't worry, you
        just need (to get) Cygnus' windows32 port of gnu
        development stuff; have a look at
@@ -310,12 +310,12 @@ WWWWIIIINNNNDDDDOOOOWWWWSSSS NNNNTTTT////99995
                bash configure
                make
 
-       NNNNooootttteeee If you rely on broken DOS/Windows tools such as
+       Note If you rely on broken DOS/Windows tools such as
        pkzip/WinZIP to unpack the distribution, make sure the
-       eeeennnnttttiiiirrrreeee source tree is unpacked correctly, in particular
-       the empty out directories (_f_l_o_w_e_r_/_o_u_t, _l_i_b_/_o_u_t et. al.)
+       entire source tree is unpacked correctly, in particular
+       the empty out directories (flower/out, lib/out et. al.)
 
-MMMMUUUUSSSSIIIIXXXXTTTTEEEEXXXX
+MUSIXTEX
        Previous versions (before 0.1.39) used fonts from the TeX
        macro package "MusixTeX".  You can still use these, but
        they are not supported.  Since LilyPond's Feta font is
@@ -325,7 +325,7 @@ MMMMUUUUSSSSIIIIXXXXTTTTEEEEXXXX
 
 
 
-11/Jan/98                LilyPond 0.1.42                        5
+2/Feb/98                 LilyPond 0.1.43                        5
 
 
 
@@ -347,7 +347,7 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
        ftp://ftp.dante.de/tex-archive/macros/musixtex/taupin
 
-       You only need the contents of the _m_f_/ subdirectory of the
+       You only need the contents of the mf/ subdirectory of the
        package. The primary site of the Taupin version is
        ftp://hprib.lps.u-psud.fr/pub/music_zips/musixtex.zip
 
@@ -359,17 +359,17 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
        applicable)
 
        Example: my fonts are in
-       _/_u_s_r_/_l_o_c_a_l_/_l_i_b_/_t_e_x_f_o_n_t_s_/_m_u_s_i_x_t_e_x_/, and I have a symlink
+       /usr/local/lib/texfonts/musixtex/, and I have a symlink
        pointing to that in
-       _/_u_s_r_/_l_i_b_/_t_e_x_m_f_/_t_e_x_m_f_/_f_o_n_t_s_/_s_o_u_r_c_e_/_p_u_b_l_i_c_/. After I copied
+       /usr/lib/texmf/texmf/fonts/source/public/. After I copied
        the files, I ran "texhash"
 
        Andreas Egler's version of MusixTeX, now called OpusTeX,
        will also work. Andreas moved some characters around in
        the fonts, so you have to edit the definitions in
-       _t_e_x_/_e_g_l_e_r_d_e_f_s_._t_e_x.
+       tex/eglerdefs.tex.
 
-AAAAUUUUTTTTHHHHOOOORRRRSSSS
+AUTHORS
        Han-Wen Nienhuys <hanwen@stack.nl>
 
        Jan Nieuwenhuizen <jan@digicash.com>
@@ -391,6 +391,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS
 
 
 
-11/Jan/98                LilyPond 0.1.42                        6
+2/Feb/98                 LilyPond 0.1.43                        6
 
 
diff --git a/NEWS b/NEWS
index a9c9c7c770..107512ee2d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,26 @@
+pl 43
+	- bf: broken Plet_spanners
+	- more GNITting
+	- avoid some more global ctors, for NeXTstep
+	- some NeXTStep patches from tiggr
+	- don't do overstrike/bold chars in textfiles
+
+pl 42.jcn2
+	- bit hesitating start of mutopia
+	- bf: don't try to typeset unterminated plet
+	- separately sticky plet durations: "c4 c4*2/3 c8 c4*1/1", ok Mats?
+	- denneboom.ly (half-baked version)
+	- indent and shape, see ^ 
+
+pl 42.jcn1
+	- bf: memmem revisited
+	- bf: ps: draw_plet vertical endings
+	- renamed stem_start to stem_begin
+	- bf: plet bracket placing on differently orientated stems
+	- more standje.ly and fixes
+******
+jan 28
+
 pl 42
 	- ly2dvi 0.5 (JAF)
 	- italian.ly (thanks, Paolo)
diff --git a/TODO b/TODO
index 3219d2897d..8f1ce7fa1d 100644
--- a/TODO
+++ b/TODO
@@ -31,8 +31,6 @@ grep for TODO and ugh/ugr
 
 	* fix stdin input
 
-	* LILYSOURCEDIR
-	
 	* documentation
 	- info?
 	- LaTeX?
@@ -91,6 +89,8 @@ STUFF
 
 	* GS: /undefined in draw_beam after XDVI magnification.
 
+	* Rational global static var.
+
 PROJECTS
 
 	* Unicode support?
@@ -318,8 +318,6 @@ SMALLISH PROJECTS
 
 	* midi esp.: use I32 iso int where 32 bits are needed (or assumed...)
 
-	* parshape
-
 	* Flower types:
 	- A decent scalar type
 	- String hash
diff --git a/VERSION b/VERSION
index 5617d6b5ef..901ee9191c 100644
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 42
+TOPLEVEL_PATCH_LEVEL = 43
 TOPLEVEL_MY_PATCH_LEVEL = 
 
 # use the above to send patches, always empty for released version:
diff --git a/bin/clean-fonts.sh b/bin/clean-fonts.sh
index fc72545334..202a873584 100644
--- a/bin/clean-fonts.sh
+++ b/bin/clean-fonts.sh
@@ -17,10 +17,6 @@ else
     TEXDIR=/var/
 fi
 
-#if [ -f $LILYPOND_SOURCEDIR/config.status ]; then
-#TEXDIR=`awk -F % '/TEXPREFIX/ {print $3}' $LILYPOND_SOURCEDIR/config.status`
-
-    
 # remove possibly stale .pk/.tfm files 
 echo> /tmp/cleaning-font-dummy
 FILES=`find $TEXDIR -name "feta*$WHAT*tfm" -or -name "feta*$WHAT*pk"`
diff --git a/bin/conflily.sh b/bin/conflily.sh
index de2ce672f9..520af8b24c 100644
--- a/bin/conflily.sh
+++ b/bin/conflily.sh
@@ -27,7 +27,7 @@ ln -sf $lelie/current/mi2mu/out/mi2mu bin/out/mi2mu
 
 if [ "x$LILYINCLUDE" = "x" ]; then
 	echo you should make add the following to your login script
-	echo "export LILYINCLUDE=$lelie/current/init"
+	echo "export LILYINCLUDE=$lelie/current/init:$lelie/current/input:$lelie/current/mutopia:$lelie/current/mutopia/j.s.bach"
 	echo "export PATH=$PATH:$lelie/current/bin/out/"
 	echo "export MFINPUTS=$MFINPUTS:$lelie/current/mf"
 fi
diff --git a/bin/make-patch.py b/bin/make-patch.py
index 360d5d70a4..207066d31a 100644
--- a/bin/make-patch.py
+++ b/bin/make-patch.py
@@ -99,7 +99,7 @@ def multiple_find(pats, dirnames):
 	l = l + my_find(pats,  d)
     return l
 
-pats = ['*.lsm', 'configure', '*.text', 'lilypond.spec']
+pats = ['*.lsm', 'configure', '*.txt', 'lilypond.spec']
 def remove_automatic(dirnames):
     files = []
     files = files + multiple_find(pats, dirnames)
diff --git a/bin/make-website.py b/bin/make-website.py
index 8effeebe40..8604c5c892 100644
--- a/bin/make-website.py
+++ b/bin/make-website.py
@@ -41,7 +41,8 @@ lilyversion= ''
 def set_vars():
     __main__.lilyversion =  version_tuple_to_str(lilydirs.version_tuple())
     os.environ["TEXINPUTS"] = os.environ["TEXINPUTS"] + ":%s/input/:" % depth;
-    os.environ["LILYINCLUDE"] = "%s/input/" % depth;
+    os.environ["LILYINCLUDE"] = "%s/input/:%s/mutopia/:%s/mutopia/J.S.Bach" \
+				% ((depth, ) *3);
     os.environ["LILYTOP"] = depth;
     __main__.mailaddress= os.environ['MAILADDRESS']
     pw = pwd.getpwuid (os.getuid());
@@ -52,7 +53,7 @@ backstr = '\n<hr>Please take me <a href=%s>back to the index</a>\n\
 of LilyPond -- The GNU Project Music typesetter\n\
 <hr><font size=-1>\n\
 This page was built using <code>%s</code> from lilypond-%s by <p>\n\
-<address><br>%s <a href=mailto:%s&>>&lt<!bla>%s</a>&gt</address>\n\
+<address><br>%s <a href=mailto:%s>&lt<!bla>%s</a>&gt</address>\n\
 <p></font>' 
 
     
@@ -80,15 +81,8 @@ def my_system(cmds):
 base="lilypond/";
 
 examples=["twinkle-pop", 
-	  "wtk1-fugue2",
-	  "standchen-16", 
-	  "standchen-20", 
-	  "standje",
-	  "wtk1-prelude1",
 	  "toccata-fuga-E", 
-	  "scsii-menuetto",
 	  "cadenza", 
-	  "gallina",
 	  "twinkle", 
 	  "collisions",
 	  "font16",
@@ -97,44 +91,29 @@ examples=["twinkle-pop",
 	  "rhythm", 
 	  "multi"]
 
+mutopia_examples = [ "wtk1-fugue2",
+		     "standchen-16", 
+		     "standchen-20", 
+		     "standje",
+		     "wtk1-prelude1",
+		     "gallina",	  
+		     "scsii-menuetto"]
+
+
 def gen_html():
     print 'generating HTML'
     my_system (["make -kC .. html"]);
     
 
-def gen_examples():
+def gen_examples(inputs):
     print 'generating examples:\n'
-    list = map(lambda x: 'out/%s.ps.gz out/%s.gif out/%s.ly.txt' % (x,x,x), examples)
+    list = map(lambda x: 'out/%s.ps.gz out/%s.gif out/%s.ly.txt' % (x,x,x), inputs)
     my_system (['make -C .. ' + join(' ', list)])
 
-texstuff = ["mudela-man", "mudela-course"]
-
-def gen_manuals():
-    print 'generating TeX doco manuals'
-    list = open('tex_manuals.html', 'w')
-    list.write( "<HTML><TITLE>PostScript Manuals</TITLE>\n" 
-     "<BODY><h1>LilyPond manuals (in PostScript)</h1>"
-     "<ul>\n")
-    todo='' 
-    for stuff in texstuff:
-	todo = todo + ' out/' + stuff + '.ps.gz'
-	list.write("<li><a href=%s.ps.gz>%s.ps.gz</a>" % (stuff, stuff))
-    list.write('</ul></BODY></HTML>')
-    list.close ()
-
-    my_system (['make -C .. ' + todo])
-
-def file_exist_b(name):
-    try: 
-	f = open(name)
-    except IOError:
-	return 0
-    f.close ()
-    return 1
 
-def gen_list():
-    print "generating HTML list\n";
-    list = open('example_output.html', 'w')
+def gen_list(inputs, filename):
+    print "generating HTML list %s\n" % filename;
+    list = open(filename, 'w')
     list.write ('<html><TITLE>Rendered Examples</TITLE>\n'
      '<body>These example files are taken from the LilyPond distribution.\n'
      'LilyPond currently only outputs TeX and MIDI. The pictures and\n'
@@ -142,7 +121,7 @@ def gen_list():
      'graphics tools.  The papersize used for these examples is A4.  The GIF\n'
      'files have been scaled to eliminate aliasing.\n');
 
-    for ex in examples:
+    for ex in inputs:
 	header  = read_mudela_header(ex + '.ly.txt')
 	def read_dict(s, default, h =header):
 		try:
@@ -177,6 +156,30 @@ def gen_list():
     list.write( "</BODY></HTML>");
     list.close()
 
+texstuff = ["mudela-man", "mudela-course"]
+
+def gen_manuals():
+    print 'generating TeX doco manuals'
+    list = open('tex_manuals.html', 'w')
+    list.write( "<HTML><TITLE>PostScript Manuals</TITLE>\n" 
+     "<BODY><h1>LilyPond manuals (in PostScript)</h1>"
+     "<ul>\n")
+    todo='' 
+    for stuff in texstuff:
+	todo = todo + ' out/' + stuff + '.ps.gz'
+	list.write("<li><a href=%s.ps.gz>%s.ps.gz</a>" % (stuff, stuff))
+    list.write('</ul></BODY></HTML>')
+    list.close ()
+
+    my_system (['make -C .. ' + todo])
+
+def file_exist_b(name):
+    try: 
+	f = open(name)
+    except IOError:
+	return 0
+    f.close ()
+    return 1
 def copy_files():
     print "copying files\n"
     
@@ -257,8 +260,11 @@ def main():
     set_vars();
     gen_html();
     copy_files();
-    gen_examples();
-    gen_list();
+    gen_examples(examples);
+    gen_list(examples, 'examples_output.html');
+
+    gen_examples(mutopia_examples);
+    gen_list(mutopia_examples, 'mutopiaexamples_output.html');
     gen_manuals();
     #set_images();
     edit_html();
diff --git a/configure b/configure
index dc086365e8..eba42b2cda 100755
--- a/configure
+++ b/configure
@@ -22,15 +22,15 @@ ac_help="$ac_help
 ac_help="$ac_help
   enable-profiling        compile with gprof support. Default: off"
 ac_help="$ac_help
-  mingw-prefix=DIR        set the mingw32 directory (standalone windows32 exes)"
+  enable-mingw-prefix=DIR        set the mingw32 directory (standalone windows32 exes)"
 ac_help="$ac_help
-  tex-prefix=DIR          set the tex-directory to find TeX subdirectories. (default: PREFIX)"
+  enable-tex-prefix=DIR          set the tex-directory to find TeX subdirectories. (default: PREFIX)"
 ac_help="$ac_help
-  tex-dir=DIR             set the directory to put LilyPond TeX files in. "
+  enable-tex-dir=DIR             set the directory to put LilyPond TeX files in. "
 ac_help="$ac_help
-  mf-dir=DIR             set the directory to put LilyPond MetaFont files in. "
+  enable-mf-dir=DIR             set the directory to put LilyPond MetaFont files in. "
 ac_help="$ac_help
-  out-dir                 set the directory for machine generated files. Default out or out-HOST"
+  enable-out-dir                 set the directory for machine generated files. Default out or out-HOST"
 
 # Initialize some variables set by options.
 # The variables have the same names as the options, with
diff --git a/configure.in b/configure.in
index a971abbae7..31fb726411 100644
--- a/configure.in
+++ b/configure.in
@@ -48,27 +48,27 @@ AC_ARG_ENABLE(profiling,
     [profile_b=$enableval])
     
 AC_ARG_ENABLE(mingw-prefix,
-    [  mingw-prefix=DIR        set the mingw32 directory (standalone windows32 exes)],
+    [  enable-mingw-prefix=DIR        set the mingw32 directory (standalone windows32 exes)],
     [MINGWPREFIX=$enableval],
     [MINGWPREFIX=no])
     
 AC_ARG_ENABLE(tex-prefix,
-    [  tex-prefix=DIR          set the tex-directory to find TeX subdirectories. (default: PREFIX)],
+    [  enable-tex-prefix=DIR          set the tex-directory to find TeX subdirectories. (default: PREFIX)],
     [TEXPREFIX=$enableval],
     [TEXPREFIX=auto] )
     
 AC_ARG_ENABLE(tex-dir,
-    [  tex-dir=DIR             set the directory to put LilyPond TeX files in. ],
+    [  enable-tex-dir=DIR             set the directory to put LilyPond TeX files in. ],
     [TEXDIR=$enableval],
     [TEXDIR=auto] )
 
 AC_ARG_ENABLE(mf-dir,
-     [  mf-dir=DIR             set the directory to put LilyPond MetaFont files in. ],
+     [  enable-mf-dir=DIR             set the directory to put LilyPond MetaFont files in. ],
      [MFDIR=$enableval],
      [MFDIR=auto])
 
 AC_ARG_ENABLE(out-dir,
-    [  out-dir                 set the directory for machine generated files. Default out or out-HOST],
+    [  enable-out-dir                 set the directory for machine generated files. Default out or out-HOST],
     [OUTDIR_NAME=$enableval]
     [])
 
diff --git a/debian/out/dummy.dep b/debian/out/dummy.dep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/flower/NEWS b/flower/NEWS
index 0629855834..1e795d59c3 100644
--- a/flower/NEWS
+++ b/flower/NEWS
@@ -1,5 +1,5 @@
-pl 34.jcn2
-	- memmem optimise
+pl 36
+	- memmem fix: bugfree and *really* conforming to /usr/include/string.h
 
 pl 35
 	- bf: libc-extension: memmem
diff --git a/flower/VERSION b/flower/VERSION
index fb9bbfb6d6..d31b273055 100644
--- a/flower/VERSION
+++ b/flower/VERSION
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 1
 MINOR_VERSION = 1
-PATCH_LEVEL = 35
+PATCH_LEVEL = 36
 # use to send patches, always empty for released version:
 MY_PATCH_LEVEL = # include separator: "-1" or ".a"
 #
diff --git a/flower/cpu-timer.cc b/flower/cpu-timer.cc
index e10985eee9..c838fe5cc9 100644
--- a/flower/cpu-timer.cc
+++ b/flower/cpu-timer.cc
@@ -8,6 +8,12 @@
 
 #include "cpu-timer.hh"
 
+// nextstep
+#ifndef CLOCKS_PER_SEC
+#define CLOCKS_PER_SEC  CLK_TCK
+#endif
+
+
 Cpu_timer::Cpu_timer ()
 {
   restart ();
diff --git a/flower/libc-extension.cc b/flower/libc-extension.cc
index d8a9fcd6e4..a18ff61b47 100644
--- a/flower/libc-extension.cc
+++ b/flower/libc-extension.cc
@@ -43,8 +43,8 @@ strnupr (char* start_l, int n)
   Manual v1.15, but it is with /usr/include/string.h   */
 
 Byte *
-memmem (Byte const *needle,int needle_len,
-	Byte const *haystack, int haystack_len)
+memmem (Byte const *haystack, int haystack_len,
+	Byte const *needle,int needle_len)
 {
   Byte const * end_haystack = haystack + haystack_len - needle_len + 1;
   Byte const * end_needle = needle + needle_len ;
@@ -56,16 +56,13 @@ memmem (Byte const *needle,int needle_len,
       Byte const *subneedle_l = needle;
       Byte const *subhaystack_l = haystack;
       while (subneedle_l < end_needle) 
-	{
-	  if (*subneedle_l++ != *subhaystack_l++)
-	    {
-	      haystack ++;
-	      continue;
-	    }
-	}
+        if (*subneedle_l++ != *subhaystack_l++)
+	  goto next;
 	
       // completed the needle. Gotcha.
       return (Byte *) haystack;
+      next:
+	haystack++;
     }
   return 0;
 }
diff --git a/init/paper11.ly b/init/paper11.ly
index 9eb5614a9f..2d943fd720 100644
--- a/init/paper11.ly
+++ b/init/paper11.ly
@@ -4,6 +4,7 @@
 
 paper_eleven = \paper {
 	linewidth = 15.0 \cm;
+	indent = 8.0\mm;
 	rulethickness = 0.25\pt;
 	barsize = 11.0 \pt;
 	interline = 2.75\pt;
diff --git a/init/paper13.ly b/init/paper13.ly
index e693d20041..892953eb0c 100644
--- a/init/paper13.ly
+++ b/init/paper13.ly
@@ -4,6 +4,7 @@
 
 paper_thirteen = \paper {
 	linewidth = 15.0 \cm;
+	indent = 8.0\mm;
 	rulethickness = 0.25\pt;
 	barsize = 13.0 \pt;
 	interline = 3.25\pt;
diff --git a/init/paper16.ly b/init/paper16.ly
index 06aa523fa2..ecca65ae45 100644
--- a/init/paper16.ly
+++ b/init/paper16.ly
@@ -13,6 +13,7 @@ paper sizes.
 %}
 paper_sixteen = \paper {
 	linewidth = 15.5 \cm;
+	indent = 5.\mm;
 	rulethickness = 0.4\pt;
 	barsize = 16.0 \pt;
 	interline = 4.\pt;
diff --git a/init/paper20.ly b/init/paper20.ly
index 8e30c48c1a..62322672de 100644
--- a/init/paper20.ly
+++ b/init/paper20.ly
@@ -4,6 +4,7 @@
 
 paper_twenty = \paper {
 	linewidth = 15.0 \cm;
+	indent = 10.\mm;
 	rulethickness = 0.4\pt;
 	barsize = 20.0 \pt;
 	interline = 5.\pt;
diff --git a/init/paper26.ly b/init/paper26.ly
index 46511883c7..b092ccded2 100644
--- a/init/paper26.ly
+++ b/init/paper26.ly
@@ -4,6 +4,7 @@
 
 paper_twentysix = \paper {
 	linewidth = 15.0 \cm;
+	indent = 12.0\mm
 	rulethickness = 0.5\pt;
 	barsize = 26.0 \pt;
 	interline = 6.5\pt;
diff --git a/input/Makefile b/input/Makefile
index 76a5363cbb..894dba5c00 100644
--- a/input/Makefile
+++ b/input/Makefile
@@ -16,6 +16,6 @@ include ./$(depth)/make/Include.make
 # 
 LYFILES = $(wildcard *.ly)
 TEXFILES = $(wildcard *.tex)
-DISTFILES = Makefile $(LYFILES) $(TEXFILES) $(wildcard *.m4)
+DISTFILES = Makefile TODO $(LYFILES) $(TEXFILES) $(wildcard *.m4)
 #
 
diff --git a/input/TODO b/input/TODO
new file mode 100644
index 0000000000..94237dfc2d
--- /dev/null
+++ b/input/TODO
@@ -0,0 +1,5 @@
+
+	- neaten/structure  examples
+
+	- rename/split into test/exapmles?
+
diff --git a/input/denneboom.ly b/input/denneboom.ly
new file mode 100644
index 0000000000..1027b2af77
--- /dev/null
+++ b/input/denneboom.ly
@@ -0,0 +1,68 @@
+\header{
+filename =	 "denneboom.ly";
+enteredby =	 "jcn";
+copyright =	 "public domain";
+TestedFeatures = "This file tests silly line shapes";
+}
+
+\version "0.1.8";
+
+boom = \lyric{
+	\meter 1/4;
+	O4 den- ne- boom, o den- ne- boom.
+	Wat zijn uw tak- ken won- der- schoon
+	O den- ne- boom, o den- ne- boom.
+	Wat zijn uw tak- ken won- der- schoon
+	Ik heb u laatst in 't bos zien staan
+	toen zat- en er geen kaarsjes aan.
+	O, Den- ne- boom, o den- ne- boom.
+	Wat zijn uw tak- ken wonder- schoon
+
+	O den- ne- boom, o den- ne- boom.
+	Wat zijn uw tak- ken won- der- schoon
+	O den- ne- boom, o den- ne- boom.
+	Wat zijn uw tak- ken won- der- schoon
+	U gloeit in bar- re winter- tijd, 
+% ugh
+%	als sneeuw op aar- de licht ge- spreid.
+%	O, Den- ne- boom, o den- ne- boom.
+%	Wat zijn uw tak- ken wonder- schoon
+}
+
+ugh = \melodic{
+	\octave c';
+	\meter 1/4;
+	c d e f | c d e f | c d e f | c d e f |
+	c d e f | c d e f | c d e f | c d e f |
+	c d e f | c d e f | c d e f | c d e f |
+	c d e f | c d e f | c d e f | c d e f |
+	c d e f | c d e f | c d e f | c d e f |
+	c d e f | c d e f | c d e f | c d e f |
+	c d e f | c d e f | c d e
+}
+
+\score{
+%	<
+%		\type Lyrics \boom
+		\ugh
+%	>
+	\paper{
+		\indent = 20. \mm;
+		\shape = 72.5 \mm 15. \mm
+			 65. \mm 30. \mm
+			 57.5 \mm 45. \mm
+			 50. \mm 60. \mm
+			 42.5 \mm 75. \mm
+			 35. \mm 90. \mm
+			 27.5 \mm 105. \mm
+			 20. \mm 120. \mm
+			 10. \mm 140. \mm
+			  0. \mm 160. \mm
+			 72.5 \mm 15. \mm
+%			 72.5 \mm 15. \mm
+			 60. \mm 40. \mm
+			 ;
+
+		gourlay_maxmeasures = 30.;
+	}
+}
diff --git a/lib/binary-source-file.cc b/lib/binary-source-file.cc
index 111ee743e6..75d7ce24ca 100644
--- a/lib/binary-source-file.cc
+++ b/lib/binary-source-file.cc
@@ -17,47 +17,47 @@
 #include "binary-source-file.hh"
 #include "string-convert.hh"
 
-Binary_source_file::Binary_source_file(String& filename_str)
-	: Source_file(filename_str)
+Binary_source_file::Binary_source_file (String& filename_str)
+	: Source_file (filename_str)
 {
 }
 
-Binary_source_file::~Binary_source_file()
+Binary_source_file::~Binary_source_file ()
 {
 }
 
 String
-Binary_source_file::error_str(char const* pos_ch_c_l) const
+Binary_source_file::error_str (char const* pos_ch_c_l) const
 {
-    assert(this);
-    if (!in_b(pos_ch_c_l))
+    assert (this);
+    if (!in_b (pos_ch_c_l))
 	return "";
 
-    char const* begin_ch_c_l = pos_ch_c_l - 8 >? ch_C();
-    char const* end_ch_c_l = pos_ch_c_l + 7 <? ch_C() + length_i();
+    char const* begin_ch_c_l = pos_ch_c_l - 8 >? ch_C ();
+    char const* end_ch_c_l = pos_ch_c_l + 7 <? ch_C () + length_i ();
 
-    String pre_str((Byte const*)begin_ch_c_l, pos_ch_c_l - begin_ch_c_l);
-    pre_str = String_convert::bin2hex_str(pre_str);
-    for (int i = 2; i < pre_str.length_i(); i += 3)
-	pre_str = pre_str.left_str(i) + " " + pre_str.cut(i, INT_MAX);
-    String post_str((Byte const*)pos_ch_c_l, end_ch_c_l - pos_ch_c_l);
-    post_str = String_convert::bin2hex_str(post_str);
-    for (int i = 2; i < post_str.length_i(); i += 3)
-	post_str = post_str.left_str(i) + " " + post_str.cut(i, INT_MAX);
+    String pre_str ((Byte const*)begin_ch_c_l, pos_ch_c_l - begin_ch_c_l);
+    pre_str = String_convert::bin2hex_str (pre_str);
+    for (int i = 2; i < pre_str.length_i (); i += 3)
+	pre_str = pre_str.left_str (i) + " " + pre_str.cut (i, INT_MAX);
+    String post_str ((Byte const*)pos_ch_c_l, end_ch_c_l - pos_ch_c_l);
+    post_str = String_convert::bin2hex_str (post_str);
+    for (int i = 2; i < post_str.length_i (); i += 3)
+	post_str = post_str.left_str (i) + " " + post_str.cut (i, INT_MAX);
 
     String str = pre_str
-	+ String('\n')
-    	+ String(' ', pre_str.length_i() + 1) 
+	+ String ('\n')
+    	+ String (' ', pre_str.length_i () + 1) 
     	+ post_str;
     return str;
 }
 
 int
-Binary_source_file::line_i(char const* pos_ch_c_l) const
+Binary_source_file::line_i (char const* pos_ch_c_l) const
 {
-    if (!in_b(pos_ch_c_l))
+    if (!in_b (pos_ch_c_l))
     	return 0;
 
-    return pos_ch_c_l - ch_C();
+    return pos_ch_c_l - ch_C ();
 }
 
diff --git a/lib/duration-convert.cc b/lib/duration-convert.cc
index 31ac07fa71..46bfc1f652 100644
--- a/lib/duration-convert.cc
+++ b/lib/duration-convert.cc
@@ -19,44 +19,44 @@ int Duration_convert::no_smaller_than_i_s = 0;
 Array<Duration> Duration_convert::dur_array_s;
 	
 String 
-Duration_convert::dur2_str(Duration dur)
+Duration_convert::dur2_str (Duration dur)
 {
   if (dur.ticks_i_)
-    return String("[") + String(dur.ticks_i_) + "]";
+    return String ("[") + String (dur.ticks_i_) + "]";
   
   String str;
   if (dur.durlog_i_ >= 0)
-    str = String( type2_i(dur.durlog_i_) );
+    str = String ( type2_i (dur.durlog_i_) );
   else if (dur.durlog_i_ == -1)
     str = "\\breve";
   else if (dur.durlog_i_ == -2)
     str = "\\longa";
-  str += String('.', dur.dots_i_);
-  if (dur.plet_b())
-    str += String("*") + String(dur.plet_.iso_i_)
-      + String("/") + String(dur.plet_.type_i_);
+  str += String ('.', dur.dots_i_);
+  if (dur.plet_b ())
+    str += String ("*") + String (dur.plet_.iso_i_)
+      + String ("/") + String (dur.plet_.type_i_);
   return str;
 }
 
 #if 0
 int
-Duration_convert::dur2_i(Duration dur, int division_1_i)
+Duration_convert::dur2_i (Duration dur, int division_1_i)
 {
-  return dur2_mom(dur) * Moment(division_1_i);
+  return dur2_mom (dur) * Moment (division_1_i);
 }
 #endif
 
 int
-Duration_convert::dur2ticks_i(Duration dur)
+Duration_convert::dur2ticks_i (Duration dur)
 {
   if (dur.ticks_i_)
     return dur.ticks_i_;
-  return dur2_mom(dur) * Moment(Duration::division_1_i_s);
+  return dur2_mom (dur) * Moment (Duration::division_1_i_s);
 }
 
 
 int
-Duration_convert::i2_type(int i)
+Duration_convert::i2_type (int i)
 {
   int t=0;
   while (!(i & 1)) {
@@ -67,7 +67,7 @@ Duration_convert::i2_type(int i)
 }
 
 int
-Duration_convert::type2_i(int type)
+Duration_convert::type2_i (int type)
 {
   if (type<0)
     return 0; 
@@ -76,19 +76,19 @@ Duration_convert::type2_i(int type)
 }
 
 Moment
-Duration_convert::dur2_mom(Duration dur)
+Duration_convert::dur2_mom (Duration dur)
 {
   if (dur.ticks_i_)
-    return Moment(dur.ticks_i_, Duration::division_1_i_s);	
+    return Moment (dur.ticks_i_, Duration::division_1_i_s);	
 
   // or simply assert?
   if (dur.durlog_i_<-10)
-    return Moment(0);
+    return Moment (0);
   Moment mom;
   if (dur.durlog_i_<0)
-    mom = Moment(type2_i(-dur.durlog_i_), 1);
+    mom = Moment (type2_i (-dur.durlog_i_), 1);
   else
-    mom = Moment(1 , type2_i(dur.durlog_i_));
+    mom = Moment (1 , type2_i (dur.durlog_i_));
 
   Moment delta = mom;
   while (dur.dots_i_--) 
@@ -97,66 +97,66 @@ Duration_convert::dur2_mom(Duration dur)
       mom += delta;
     }
 
-  return mom * plet_factor_mom(dur);    
+  return mom * plet_factor_mom (dur);    
 }
 
 #if 0
 Moment
-Duration_convert::i2_mom(int time_i, int division_1_i)
+Duration_convert::i2_mom (int time_i, int division_1_i)
 {
   if (!time_i)
-    return Moment(0);
+    return Moment (0);
 
   if (division_1_i > 0)
-    return Moment(time_i, division_1_i);
+    return Moment (time_i, division_1_i);
   else 
-    return Moment(-division_1_i, time_i);
+    return Moment (-division_1_i, time_i);
 }
 #endif
 
 Duration
-Duration_convert::mom2_dur(Moment mom)
+Duration_convert::mom2_dur (Moment mom)
 {
   if (!mom) 
     {
       Duration dur;
-      dur.set_plet(0,1);
+      dur.set_plet (0,1);
       return dur;
     }
 	
 
-  Duration dur = mom2standardised_dur(mom);
-  //	if (!dur.mom() || (dur.mom() == mom))
-  if (!dur.length() || (dur.length() == mom))
+  Duration dur = mom2standardised_dur (mom);
+  //	if (!dur.mom () || (dur.mom () == mom))
+  if (!dur.length () || (dur.length () == mom))
     return dur;
-  assert(midi_as_plet_b_s);
+  assert (midi_as_plet_b_s);
 
-  //	dur.set_plet(type_mom, Duration::division_1_i_s / 4); 
+  //	dur.set_plet (type_mom, Duration::division_1_i_s / 4); 
 
-  //	Moment as_plet_mom = mom / dur.mom();
-  Moment as_plet_mom = mom / dur.length();
-  as_plet_mom *= dur.plet_.mom();
-  long num = as_plet_mom.numerator().as_long();
-  long den = as_plet_mom.denominator().as_long();
-  dur.set_plet(num, den);
+  //	Moment as_plet_mom = mom / dur.mom ();
+  Moment as_plet_mom = mom / dur.length ();
+  as_plet_mom *= dur.plet_.mom ();
+  long num = as_plet_mom.numerator ().as_long ();
+  long den = as_plet_mom.denominator ().as_long ();
+  dur.set_plet (num, den);
   return dur;
 }
 
 Duration
-Duration_convert::mom2standardised_dur(Moment mom)
+Duration_convert::mom2standardised_dur (Moment mom)
 {
-  //	if (!dur_array_s.length_i())
-  if (!dur_array_s.size())
-    set_array();
-  assert(dur_array_s.size());
-  for (int i = 0; i < dur_array_s.size() - 1; i++) 
+  //	if (!dur_array_s.length_i ())
+  if (!dur_array_s.size ())
+    set_array ();
+  assert (dur_array_s.size ());
+  for (int i = 0; i < dur_array_s.size () - 1; i++) 
     {
-      Moment lower_mom = dur2_mom(dur_array_s[ i ]);
+      Moment lower_mom = dur2_mom (dur_array_s[ i ]);
       if (mom <= lower_mom) 
 	{
 	  // all arbitrary, but 3/4 will get rid of the noise...
 	  // kinda ok
-	  if (i || (mom / lower_mom > Moment(3, 4)))
+	  if (i || (mom / lower_mom > Moment (3, 4)))
 	    return dur_array_s[ i ];
 	  else 
 	    {
@@ -165,107 +165,107 @@ Duration_convert::mom2standardised_dur(Moment mom)
 	      return d;
 	    }
 	}
-      Moment upper_mom = dur2_mom(dur_array_s[ i + 1 ]);
+      Moment upper_mom = dur2_mom (dur_array_s[ i + 1 ]);
       if ((mom < upper_mom)
 	  && ((mom - lower_mom) / lower_mom
 	      < (upper_mom - mom) / upper_mom))
 	return dur_array_s[ i ];
     }
-  return dur_array_s[ dur_array_s.size() - 1 ];
+  return dur_array_s[ dur_array_s.size () - 1 ];
 }
 
 void
-Duration_convert::set_array()
+Duration_convert::set_array ()
 {
-  dur_array_s.clear();
+  dur_array_s.clear ();
 
   Duration_iterator iter_dur;
-  assert(iter_dur);
+  assert (iter_dur);
   while (iter_dur)
-    dur_array_s.push(iter_dur++);
+    dur_array_s.push (iter_dur++);
 }
 
 
 Moment
-Duration_convert::plet_factor_mom(Duration dur)
+Duration_convert::plet_factor_mom (Duration dur)
 {
-  return dur.plet_.mom();
+  return dur.plet_.mom ();
 }
 
 Real
-Duration_convert::sync_f(Duration dur, Moment mom)
+Duration_convert::sync_f (Duration dur, Moment mom)
 {
-  return mom / dur2_mom(dur);
+  return mom / dur2_mom (dur);
 }
 
 Duration
-Duration_convert::ticks2_dur(int ticks_i)
+Duration_convert::ticks2_dur (int ticks_i)
 {
-  //		Duration dur(4, 0);
-  //		dur.set_plet(ticks_i, Duration::division_1_i_s / 4); 
+  //		Duration dur (4, 0);
+  //		dur.set_plet (ticks_i, Duration::division_1_i_s / 4); 
 
-  Moment mom(ticks_i, Duration::division_1_i_s);
+  Moment mom (ticks_i, Duration::division_1_i_s);
   if (midi_as_plet_b_s)
-    return mom2_dur(mom);
+    return mom2_dur (mom);
 
-  Duration dur = mom2standardised_dur(mom);
+  Duration dur = mom2standardised_dur (mom);
 
-  //	if (dur.mom() == mom)
-  if (dur.length() == mom)
+  //	if (dur.mom () == mom)
+  if (dur.length () == mom)
     return dur;
 		
 // huh?
 #if 0
   dur.durlog_i_ = -100;
   dur.dots_i_ = 0;
-  dur.set_ticks(ticks_i);
+  dur.set_ticks (ticks_i);
   return dur;
 #else
-  return mom2_dur(mom);
+  return mom2_dur (mom);
 #endif
 }
 
 Duration
-Duration_convert::ticks2standardised_dur(int ticks_i)
+Duration_convert::ticks2standardised_dur (int ticks_i)
 {
-  Moment mom(ticks_i, Duration::division_1_i_s);
-  Duration dur = mom2standardised_dur(mom);
+  Moment mom (ticks_i, Duration::division_1_i_s);
+  Duration dur = mom2standardised_dur (mom);
   return dur;
 }
 
-Duration_iterator::Duration_iterator()
+Duration_iterator::Duration_iterator ()
 {
   cursor_dur_.durlog_i_ = 7;
   if (Duration_convert::no_smaller_than_i_s)
     cursor_dur_.durlog_i_ = Duration_convert::no_smaller_than_i_s;
-  //	cursor_dur_.set_plet(1, 1);
+  //	cursor_dur_.set_plet (1, 1);
 }
 
 Duration 
 Duration_iterator::operator ++(int)
 {
-  return forward_dur();
+  return forward_dur ();
 }
 
 Duration
 Duration_iterator::operator ()()
 {
-  return dur();
+  return dur ();
 }
 
-Duration_iterator::operator bool()
+Duration_iterator::operator bool ()
 {
-  return ok();
+  return ok ();
 }
 
 Duration
-Duration_iterator::dur()
+Duration_iterator::dur ()
 {
   return cursor_dur_;
 }
 
 Duration
-Duration_iterator::forward_dur()
+Duration_iterator::forward_dur ()
 {
   /* should do smart table? guessing: 
      duration wholes
@@ -279,63 +279,63 @@ Duration_iterator::forward_dur()
      8.	0.1875
 		
      */
-  assert(ok());
+  assert (ok ());
 
   Duration dur = cursor_dur_;
 
-  if (!cursor_dur_.dots_i_ && !cursor_dur_.plet_b()) 
+  if (!cursor_dur_.dots_i_ && !cursor_dur_.plet_b ()) 
     {
       cursor_dur_.durlog_i_ += 1;
       cursor_dur_.dots_i_ = 2;
     }
   else if (cursor_dur_.dots_i_ == 2) 
     {
-      assert(!cursor_dur_.plet_b());
+      assert (!cursor_dur_.plet_b ());
       cursor_dur_.dots_i_ = 0;
       cursor_dur_.durlog_i_ -=2;
-      cursor_dur_.set_plet(2, 3);
+      cursor_dur_.set_plet (2, 3);
     }
-  else if (cursor_dur_.plet_b() 
+  else if (cursor_dur_.plet_b () 
 	   && (cursor_dur_.plet_.iso_i_ == 2)
 	   && (cursor_dur_.plet_.type_i_ == 3)) 
     {
-      assert(!cursor_dur_.dots_i_);
-      cursor_dur_.set_plet(1, 1);
+      assert (!cursor_dur_.dots_i_);
+      cursor_dur_.set_plet (1, 1);
       cursor_dur_.durlog_i_ += 1;
       cursor_dur_.dots_i_ = 1;
     }
   else if (cursor_dur_.dots_i_ == 1) 
     {
-      assert(!cursor_dur_.plet_b());
+      assert (!cursor_dur_.plet_b ());
       cursor_dur_.dots_i_ = 0;
       cursor_dur_.durlog_i_ -= 1;
     }
 		
   if (Duration_convert::no_triplets_b_s
-      && cursor_dur_.plet_b() && ok())
-    forward_dur();
+      && cursor_dur_.plet_b () && ok ())
+    forward_dur ();
   if (Duration_convert::no_double_dots_b_s 
-      && (cursor_dur_.dots_i_ == 2) && ok())
-    forward_dur();
+      && (cursor_dur_.dots_i_ == 2) && ok ())
+    forward_dur ();
   if (Duration_convert::no_smaller_than_i_s
-      && (cursor_dur_.durlog_i_ > Duration_convert::no_smaller_than_i_s) && ok())
-    forward_dur();
+      && (cursor_dur_.durlog_i_ > Duration_convert::no_smaller_than_i_s) && ok ())
+    forward_dur ();
   if (Duration_convert::no_smaller_than_i_s
       && cursor_dur_.dots_i_
       && (cursor_dur_.durlog_i_ >= Duration_convert::no_smaller_than_i_s)
-      && ok())
-    forward_dur();
+      && ok ())
+    forward_dur ();
   if (Duration_convert::no_smaller_than_i_s
       && (cursor_dur_.dots_i_ == 2)
       && (cursor_dur_.durlog_i_ >= Duration_convert::no_smaller_than_i_s / 2)
-      && ok())
-    forward_dur();
+      && ok ())
+    forward_dur ();
 
   return dur;
 }
 
 bool
-Duration_iterator::ok()
+Duration_iterator::ok ()
 {
   return (cursor_dur_.durlog_i_ 
 	  && !((cursor_dur_.durlog_i_ == 0) && (cursor_dur_.dots_i_ > 2)));
diff --git a/lib/duration.cc b/lib/duration.cc
index f04c5e42c0..eca46dd12b 100644
--- a/lib/duration.cc
+++ b/lib/duration.cc
@@ -21,7 +21,7 @@
 int Duration::division_1_i_s = 384 * 4;
 
 
-Duration::Duration()
+Duration::Duration ()
 {
   durlog_i_ = 0;
   dots_i_ = 0;
@@ -29,53 +29,53 @@ Duration::Duration()
 }
 
 bool
-Duration::duration_type_b(int t)
+Duration::duration_type_b (int t)
 {
   /*
     ugh. Assuming behavior of conversion funcs on broken input.
    */
-  return t == Duration_convert::type2_i(Duration_convert::i2_type(t));
+  return t == Duration_convert::type2_i (Duration_convert::i2_type (t));
 }
 
 // ugh, what's this?
-// i should be called "mom()", ... or at least "length_mom()"
+// i should be called "mom ()", ... or at least "length_mom ()"
 Moment
-Duration::length() const
+Duration::length () const
 {
-  return Duration_convert::dur2_mom(*this);
+  return Duration_convert::dur2_mom (*this);
 }
 
 void
-Duration::set_plet(int i, int t)
+Duration::set_plet (int i, int t)
 {
   plet_.iso_i_ = i; 
   plet_.type_i_ = t;
 }
 
 void
-Duration::set_plet(Duration d)
+Duration::set_plet (Duration d)
 {
   plet_.iso_i_ = d.plet_.iso_i_; 
   plet_.type_i_ = d.plet_.type_i_;
 }
 
 void
-Duration::set_ticks(int ticks_i)
+Duration::set_ticks (int ticks_i)
 {
-  assert(durlog_i_ <10);
-  assert(!dots_i_);
+  assert (durlog_i_ <10);
+  assert (!dots_i_);
   ticks_i_ = ticks_i;
 }
 
 String
-Duration::str() const
+Duration::str () const
 {
-  return Duration_convert::dur2_str(*this);
+  return Duration_convert::dur2_str (*this);
 }
 
 
 bool
-Duration::plet_b()
+Duration::plet_b ()
 {
-  return !plet_.unit_b();
+  return !plet_.unit_b ();
 }
diff --git a/lib/includable-lexer.cc b/lib/includable-lexer.cc
index ca103a9c9e..3728476203 100644
--- a/lib/includable-lexer.cc
+++ b/lib/includable-lexer.cc
@@ -13,7 +13,7 @@
 #define YY_BUF_SIZE 16384
 #endif
 
-Includable_lexer::Includable_lexer()
+Includable_lexer::Includable_lexer ()
 {
   yy_current_buffer = 0;
 }
@@ -21,22 +21,22 @@ Includable_lexer::Includable_lexer()
 /** set the  new input to s, remember old file.
 */
 void
-Includable_lexer::new_input(String s, Sources  * global_sources)
+Includable_lexer::new_input (String s, Sources  * global_sources)
 {
-  Source_file * sl = global_sources->get_file_l(s);
+  Source_file * sl = global_sources->get_file_l (s);
   if (!sl)
     {
-      String msg =_("Can't find file `") + s+ "'";
-      LexerError(msg.ch_C ());
+      String msg =_ ("Can't find file `") + s+ "'";
+      LexerError (msg.ch_C ());
       return;
     }
 
 
-  char_count_stack_.push(0);
+  char_count_stack_.push (0);
   if (yy_current_buffer)
-    state_stack_.push(yy_current_buffer);
+    state_stack_.push (yy_current_buffer);
   cout << "[" << s<<flush;
-  include_stack_.push(sl);
+  include_stack_.push (sl);
 
   /*
     ugh. We'd want to create a buffer from the bytes directly.
@@ -45,43 +45,43 @@ Includable_lexer::new_input(String s, Sources  * global_sources)
     filelength but a BUFFERSIZE. Maybe this is why reading stdin fucks up.
 
     */
-  yy_switch_to_buffer(yy_create_buffer(sl->istream_l(), YY_BUF_SIZE));
+  yy_switch_to_buffer (yy_create_buffer (sl->istream_l (), YY_BUF_SIZE));
 }
 
 /** pop the inputstack.  conceptually this is a destructor, but it
   does not destruct the Source_file that Includable_lexer::new_input creates.  */
 bool
-Includable_lexer::close_input()
+Includable_lexer::close_input ()
 {
-  include_stack_.pop();
-  char_count_stack_.pop();
+  include_stack_.pop ();
+  char_count_stack_.pop ();
   cout << "]"<<flush;
-  yy_delete_buffer(yy_current_buffer);
+  yy_delete_buffer (yy_current_buffer);
   yy_current_buffer = 0;
-  if (state_stack_.empty())
+  if (state_stack_.empty ())
     {
       return false;
     }
   else
       {
-	yy_switch_to_buffer(state_stack_.pop());
+	yy_switch_to_buffer (state_stack_.pop ());
 	return true;
       }
 }
 
 char const*
-Includable_lexer::here_ch_C()
+Includable_lexer::here_ch_C ()
 {
-  if (include_stack_.empty())
+  if (include_stack_.empty ())
     return 0;
-  return include_stack_.top()->ch_C() + char_count_stack_.top();
+  return include_stack_.top ()->ch_C () + char_count_stack_.top ();
 }
 
-Includable_lexer::~Includable_lexer()
+Includable_lexer::~Includable_lexer ()
 {
-  while (!include_stack_.empty())
+  while (!include_stack_.empty ())
     {
-      close_input();
+      close_input ();
     }
 }
 /**
@@ -89,16 +89,16 @@ Includable_lexer::~Includable_lexer()
   don't know about the location of the lexer. Add this as a
   YY_USER_ACTION */
 void
-Includable_lexer::add_lexed_char(int count)
+Includable_lexer::add_lexed_char (int count)
 {
-  char_count_stack_.top() += count;
+  char_count_stack_.top () += count;
 }
 
 Source_file*
-Includable_lexer::source_file_l() const
+Includable_lexer::source_file_l () const
 {
-  if (include_stack_.empty())
+  if (include_stack_.empty ())
     return 0;
   else
-    return include_stack_.top();
+    return include_stack_.top ();
 }
diff --git a/lib/include/binary-source-file.hh b/lib/include/binary-source-file.hh
index 9733c1b86b..33ee6bd784 100644
--- a/lib/include/binary-source-file.hh
+++ b/lib/include/binary-source-file.hh
@@ -10,11 +10,11 @@
 
 class Binary_source_file : public Source_file {
 public:
-	Binary_source_file(String& filename_str );
-	virtual ~Binary_source_file();
+	Binary_source_file (String& filename_str );
+	virtual ~Binary_source_file ();
 
-	virtual String error_str(char const* pos_ch_c_l ) const;
-	virtual int line_i(char const* pos_ch_c_l ) const;
+	virtual String error_str (char const* pos_ch_c_l ) const;
+	virtual int line_i (char const* pos_ch_c_l ) const;
 };
 
 #endif // BINARY_SOURCE_FILE_HH //
diff --git a/lib/include/duration-convert.hh b/lib/include/duration-convert.hh
index 3f8bda96a4..e3926f030c 100644
--- a/lib/include/duration-convert.hh
+++ b/lib/include/duration-convert.hh
@@ -24,11 +24,11 @@
 
 	SUGGESTION: currently a moment in time is called moment too;
 	let-s typedef Rational When too, so that we get 
-	When Staff_column::when(), Moment Voice_element::mom().
+	When Staff_column::when (), Moment Voice_element::mom ().
 
 	[todo]
 	move all statics to real members, instantiate Duration_convert
-	object(s).
+	object (s).
 */
 struct Duration_convert {
 	
@@ -45,77 +45,77 @@ struct Duration_convert {
 //	static int const division_1_c_i = 384;
 
 //	/// Return (integer, division) representation.
-//	static int dur2_i(Duration dur, int division_1_i = division_1_c_i );
+//	static int dur2_i (Duration dur, int division_1_i = division_1_c_i );
 
     /// Return number of ticks in (ticks, division_1) representation
-    static int dur2ticks_i(Duration dur );
+    static int dur2ticks_i (Duration dur );
 	
     /// Return the type_i representation of note length i
-    static int i2_type(int i);
+    static int i2_type (int i);
 
     /// Return the note length corresponding to the type_i representation
     /// Return 0 if longer than whole note.
-    static int type2_i(int type);
+    static int type2_i (int type);
 
     /// Return Moment representation (fraction of whole note).
-    static Moment dur2_mom(Duration dur );
+    static Moment dur2_mom (Duration dur );
 
     /// Return Mudela string representation.
-    static String dur2_str(Duration dur );
+    static String dur2_str (Duration dur );
 
 //	/// Return Moment from (integer, division) representation.
-//	static Moment i2_mom(int i, int division_1_i = division_1_c_i );
+//	static Moment i2_mom (int i, int division_1_i = division_1_c_i );
 
 //	/// Return Moment (fraction of whole) representation, best guess.
-//	static Duration mom2_dur(Moment mom );
+//	static Duration mom2_dur (Moment mom );
 
     /// Return duration from Moment (fraction of whole) representation.
-    static Duration mom2_dur(Moment mom );
+    static Duration mom2_dur (Moment mom );
 
     /// Return standardised duration, best guess if not exact.
-    static Duration mom2standardised_dur(Moment mom );
+    static Duration mom2standardised_dur (Moment mom );
   
     /// Return plet factor (not a Moment: should use Rational?).
-    static Moment plet_factor_mom(Duration dur );
+    static Moment plet_factor_mom (Duration dur );
 
-    static void set_array();
+    static void set_array ();
 
     /** Return synchronisation factor for mom, so that
-      mom2_dur(mom / sync_f ) will return the duration dur.		
+      mom2_dur (mom / sync_f ) will return the duration dur.		
       */ 
-    static Real sync_f(Duration dur, Moment mom );
+    static Real sync_f (Duration dur, Moment mom );
 
     /// Return exact duration, in midi-ticks if not-exact.
-    static Duration ticks2_dur(int ticks_i );
+    static Duration ticks2_dur (int ticks_i );
 
     /// Return standardised duration, best guess if not exact.
-    static Duration ticks2standardised_dur(int ticks_i );
+    static Duration ticks2standardised_dur (int ticks_i );
 };
 
 /// (iter_dur)
 struct Duration_iterator {
     /// start at shortest: 128:2/3
-    Duration_iterator();
+    Duration_iterator ();
 
     // **** what about these three here ?
-    /// return forward_dur();
+    /// return forward_dur ();
     Duration operator ++(int); 
 
-    /// return ok()
-    operator bool(); 
+    /// return ok ()
+    operator bool (); 
 
-    /// return dur()
+    /// return dur ()
     Duration operator ()(); 
     // ****
 
     /// return current dur
-    Duration dur();
+    Duration dur ();
 
-    /// return dur(), step to next
-    Duration forward_dur();
+    /// return dur (), step to next
+    Duration forward_dur ();
 
     /// durations left?
-    bool ok();
+    bool ok ();
 
 private:
     Duration cursor_dur_;
diff --git a/lib/include/duration.hh b/lib/include/duration.hh
index 49d5819bd9..642701e8d5 100644
--- a/lib/include/duration.hh
+++ b/lib/include/duration.hh
@@ -28,15 +28,15 @@ struct Duration {
   /**
     Ctor of Duration. 
     */
-  Duration();
+  Duration ();
   /// is the "plet factor" of this note != 1 ?
-  bool plet_b();
-  String str() const;
-  void set_plet(int,int );
-  void set_plet(Duration );
-  static bool duration_type_b(int t);
-  void set_ticks(int ticks_i );
-  Moment length() const ;	// zo naai mij
+  bool plet_b ();
+  String str () const;
+  void set_plet (int,int );
+  void set_plet (Duration );
+  static bool duration_type_b (int t);
+  void set_ticks (int ticks_i );
+  Moment length () const ;	// zo naai mij
   static int division_1_i_s;
 
   /// Logarithm of the base duration.
diff --git a/lib/include/file-storage.hh b/lib/include/file-storage.hh
index 23da07e19f..1ac150f592 100644
--- a/lib/include/file-storage.hh
+++ b/lib/include/file-storage.hh
@@ -12,51 +12,16 @@
 
 #include "proto.hh"
 
+
 /**
   store a file in-memory.
  */
 class File_storage
 {
 public:
-    virtual char const* ch_C() const=0;
-    virtual int length_i() const=0;
-    virtual ~File_storage(){}
-};
-
-/**
-  Use mmap to "copy"  a file into memory
- */
-class Mapped_file_storage:public File_storage
-{
-public:
-    Mapped_file_storage(String);    
-protected:
-    virtual char const* ch_C() const;
-    virtual int length_i() const;
-    virtual ~Mapped_file_storage();
-private:
-    void open(String name);
-    void close();
-
-    void map();
-    void unmap();
-    int fildes_i_;
-    off_t size_off_;
-    caddr_t data_caddr_;
+  virtual char const* ch_C () const=0;
+  virtual int length_i () const=0;
+  virtual ~File_storage (){}
 };
 
-/**
-  read file char by char and copy into a malloc array.
- */
-class Simple_file_storage  : public File_storage
-{
-    char * data_p_;
-    int len_i_;
-protected:    
-    virtual char const*ch_C() const;
-    virtual int length_i() const;
-    virtual ~Simple_file_storage();
-public:
-    Simple_file_storage(String);
-};
 #endif // FILE_STORAGE_HH
diff --git a/lib/include/includable-lexer.hh b/lib/include/includable-lexer.hh
index fb1a96d0bc..f9dce9696d 100644
--- a/lib/include/includable-lexer.hh
+++ b/lib/include/includable-lexer.hh
@@ -24,19 +24,19 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE;
   an yyFlexLexer child with provisions for inclusion.
  */
 class Includable_lexer : public yyFlexLexer {
-    Array<YY_BUFFER_STATE> state_stack_;
+  Array<YY_BUFFER_STATE> state_stack_;
 protected:
-    bool  close_input();
-    Array<Source_file*> include_stack_;
-    Array<int> char_count_stack_;
+  bool  close_input ();
+  Array<Source_file*> include_stack_;
+  Array<int> char_count_stack_;
 public:
 
-    Source_file* source_file_l() const;
-    void new_input(String s,Sources*);
-    Includable_lexer();
-    ~Includable_lexer();
-    void add_lexed_char(int);
-    char const * here_ch_C();
+  Source_file* source_file_l () const;
+  void new_input (String s,Sources*);
+  Includable_lexer ();
+  ~Includable_lexer ();
+  void add_lexed_char (int);
+  char const * here_ch_C ();
 };
 
 
diff --git a/lib/include/input.hh b/lib/include/input.hh
index 579f829c14..f82ba2d224 100644
--- a/lib/include/input.hh
+++ b/lib/include/input.hh
@@ -20,15 +20,15 @@ class Input {
     Source_file * source_file_l_;
 public:
     
-    void warning(String) const; // should use member func?
-    void error(String) const;
-    void message(String) const;
-    void set_spot(Input const &);
+    void warning (String) const; // should use member func?
+    void error (String) const;
+    void message (String) const;
+    void set_spot (Input const &);
     
-    String location_str() const;
-    Input(Source_file*, char const*);
-    Input();
-    Input(Input const& );
+    String location_str () const;
+    Input (Source_file*, char const*);
+    Input ();
+    Input (Input const& );
 };
 
 #endif // INPUT_HH
diff --git a/lib/include/mapped-file-storage.hh b/lib/include/mapped-file-storage.hh
new file mode 100644
index 0000000000..4ca29a3006
--- /dev/null
+++ b/lib/include/mapped-file-storage.hh
@@ -0,0 +1,40 @@
+/*   
+  mapped-file-storage.hh -- declare Mapped_file_storage
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+  
+ */
+
+#ifndef MAPPED_FILE_STORAGE_HH
+#define MAPPED_FILE_STORAGE_HH
+
+
+
+#include "file-storage.hh"
+
+/**
+  Use mmap to "copy"  a file into memory
+ */
+class Mapped_file_storage:public File_storage
+{
+public:
+  Mapped_file_storage (String);    
+protected:
+  virtual char const* ch_C () const;
+  virtual int length_i () const;
+  virtual ~Mapped_file_storage ();
+private:
+  void open (String name);
+  void close ();
+
+  void map ();
+  void unmap ();
+  int fildes_i_;
+  off_t size_off_;
+  caddr_t data_caddr_;
+};
+
+#endif /* MAPPED_FILE_STORAGE_HH */
+
diff --git a/lib/include/moment.hh b/lib/include/moment.hh
index bbd3388e74..f9d234d71f 100644
--- a/lib/include/moment.hh
+++ b/lib/include/moment.hh
@@ -18,7 +18,7 @@
 
   Can't we name this Saint_jut_mom (Sintjuttemis ?)  */
   
-const infinity_mom = Rational(INT_MAX);
+const infinity_mom = Rational (INT_MAX);
 
 class String;
 typedef Rational Moment;
diff --git a/lib/include/plet.hh b/lib/include/plet.hh
index 2326416716..ecedcc4d43 100644
--- a/lib/include/plet.hh
+++ b/lib/include/plet.hh
@@ -17,9 +17,9 @@
   (plet)
  */
 struct Plet {
-  Plet();
-  Moment mom() const;
-  bool unit_b() const;
+  Plet ();
+  Moment mom () const;
+  bool unit_b () const;
   int iso_i_;  // 2/3; 2 is not duration, maar of count!
   int type_i_; 
 };
diff --git a/lib/include/simple-file-storage.hh b/lib/include/simple-file-storage.hh
new file mode 100644
index 0000000000..78a00d8651
--- /dev/null
+++ b/lib/include/simple-file-storage.hh
@@ -0,0 +1,31 @@
+/*   
+  simple-file-storage.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+  
+ */
+
+#ifndef SIMPLE_FILE_STORAGE_HH
+#define SIMPLE_FILE_STORAGE_HH
+
+#include "file-storage.hh"
+
+/**
+  read file char by char and copy into a malloc array.
+ */
+class Simple_file_storage  : public File_storage
+{
+  char * data_p_;
+  int len_i_;
+protected:    
+  virtual char const*ch_C () const;
+  virtual int length_i () const;
+  virtual ~Simple_file_storage ();
+public:
+  Simple_file_storage (String);
+};
+
+#endif /* SIMPLE_FILE_STORAGE_HH */
+
diff --git a/lib/include/source-file.hh b/lib/include/source-file.hh
index 9b084a3280..d5346be5f7 100644
--- a/lib/include/source-file.hh
+++ b/lib/include/source-file.hh
@@ -16,24 +16,24 @@ class istream;
 class Source_file
 {
 public:
-    /** Ugh! filename gets changed! The path to the opened file may
-       change, since it might be searched in multiple directories.  */
-    Source_file(String filename_str_r );
-    virtual ~Source_file();
-
-    char const* ch_C() const;
-    virtual String error_str(char const* pos_ch_c_l ) const;
-    istream * istream_l();
-    bool in_b(char const* pos_ch_c_l ) const;
-    int length_i() const;
-    virtual int line_i(char const* pos_ch_c_l ) const;
-    String name_str() const;
-    String file_line_no_str(char const* ch_c_l ) const;
+  /** Ugh! filename gets changed! The path to the opened file may
+    change, since it might be searched in multiple directories.  */
+  Source_file (String filename_str_r );
+  virtual ~Source_file ();
+
+  char const* ch_C () const;
+  virtual String error_str (char const* pos_ch_c_l ) const;
+  istream * istream_l ();
+  bool in_b (char const* pos_ch_c_l ) const;
+  int length_i () const;
+  virtual int line_i (char const* pos_ch_c_l ) const;
+  String name_str () const;
+  String file_line_no_str (char const* ch_c_l ) const;
 
 private:
-    String name_str_;
-    istream* istream_p_;
-    File_storage * storage_p_;
+  String name_str_;
+  istream* istream_p_;
+  File_storage * storage_p_;
 };
 
 #endif // SOURCE_FILE_HH //
diff --git a/lib/include/source.hh b/lib/include/source.hh
index 357647b9a1..f6a824fa70 100644
--- a/lib/include/source.hh
+++ b/lib/include/source.hh
@@ -12,18 +12,18 @@
 class Sources 
 {
 public:
-    Sources();
+  Sources ();
 
-    Source_file * get_file_l(String &filename );
-    Source_file* sourcefile_l(char const* ch_C );
-    void set_path(File_path*p_C);
-    void set_binary(bool);
+  Source_file * get_file_l (String &filename );
+  Source_file* sourcefile_l (char const* ch_C );
+  void set_path (File_path*p_C);
+  void set_binary (bool);
 
 private:
-    const File_path * path_C_;
-    void add(Source_file* sourcefile_p );
-    Pointer_list<Source_file*> sourcefile_p_list_;
-    bool binary_b_ ;
+  const File_path * path_C_;
+  void add (Source_file* sourcefile_p );
+  Pointer_list<Source_file*> sourcefile_p_list_;
+  bool binary_b_ ;
 };
 
 
diff --git a/lib/include/warn.hh b/lib/include/warn.hh
index 61ab2e6972..45edc4ba40 100644
--- a/lib/include/warn.hh
+++ b/lib/include/warn.hh
@@ -12,6 +12,6 @@
 
 #include "string.hh"
 
-void warning(String message_str  );
-void error(String message_str);
+void warning (String message_str  );
+void error (String message_str);
 #endif // WARN_HH
diff --git a/lib/include/windhoos-suck-suck-suck-thank-you-cygnus.hh b/lib/include/windhoos-suck-suck-suck-thank-you-cygnus.hh
index cabfd3c5c4..95d60bfc33 100644
--- a/lib/include/windhoos-suck-suck-suck-thank-you-cygnus.hh
+++ b/lib/include/windhoos-suck-suck-suck-thank-you-cygnus.hh
@@ -1,15 +1,15 @@
 //
 // windhoos-suck-suck-suck-thank-you-cygnus.hh
 //
-// mmap() should work now (cygnus beta 18), but let's keep it here
+// mmap () should work now (cygnus beta 18), but let's keep it here
 // for people using old cygnus releases
 #if 0 //def _WINDOWS32
 #ifndef WINDHOOS_SUCK_SUCK_SUCK_HH
 #define WINDHOOS_SUCK_SUCK_SUCK_HH
 
-caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset);
+caddr_t mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset);
 
-int munmap(caddr_t addr, size_t len);
+int munmap (caddr_t addr, size_t len);
 
 #endif // WINDHOOS_SUCK_SUCK_SUCK_HH
 #endif // _WINDOWS32 //
diff --git a/lib/input.cc b/lib/input.cc
index 7c5fed9720..e9cc3fd007 100644
--- a/lib/input.cc
+++ b/lib/input.cc
@@ -11,65 +11,65 @@
 #include "source.hh"
 #include "source-file.hh"
 
-Input::Input(Source_file*s, char const *cl)
+Input::Input (Source_file*s, char const *cl)
 {
     source_file_l_=s;
     defined_ch_C_=cl;
 }
 
-Input::Input()
+Input::Input ()
 {
     source_file_l_ = 0;
     defined_ch_C_ = 0;
 }
 
-Input::Input(Input const &s)
+Input::Input (Input const &s)
 {
     source_file_l_ = s.source_file_l_;
     defined_ch_C_ = s.defined_ch_C_;
 }
 
 void
-Input::set_spot(Input const &i)
+Input::set_spot (Input const &i)
 {
     *this  = i;
 }
 
 void
-Input::message(String message_str) const
+Input::message (String message_str) const
 {
     String str = "";
 
     if (source_file_l_)
       {
-	str += location_str() + String(": ");
+	str += location_str () + String (": ");
       }
 
     str += message_str;
     if (source_file_l_)
       {
 	str += ":\n";
-	str += source_file_l_->error_str(defined_ch_C_);
+	str += source_file_l_->error_str (defined_ch_C_);
       }
     cerr << str << endl;
 }
 
 void
-Input::warning(String message_str) const
+Input::warning (String message_str) const
 {
-    message(_("warning: ") + message_str);
+    message (_ ("warning: ") + message_str);
 }
 void
-Input::error(String s) const
+Input::error (String s) const
 {
-    message(_("error: ")+ s);
+    message (_ ("error: ")+ s);
 }
 
 String
-Input::location_str() const
+Input::location_str () const
 {
     if (source_file_l_)
-	return source_file_l_->file_line_no_str(defined_ch_C_);
+	return source_file_l_->file_line_no_str (defined_ch_C_);
     else
-	return _("(location unknown)");
+	return _ ("(location unknown)");
 }
diff --git a/lib/mapped-file-storage.cc b/lib/mapped-file-storage.cc
index ad39630b37..c318925b4e 100644
--- a/lib/mapped-file-storage.cc
+++ b/lib/mapped-file-storage.cc
@@ -1,11 +1,16 @@
+#ifdef HAIRY_STUFF
+
 /*
   file-storage.cc -- implement Mapped_file_storage
 
   source file of the GNU LilyPond music typesetter
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-  Jan Nieuwenhuizen <jan@digicash.com>
+  Jan Nieuwenhuizen <jan@digicash.com>.
+
+  Nextstep fixes by tiggr@ics.ele.tue.nl
 */
+
 #include <sys/types.h>		// open, mmap
 #include <sys/stat.h>		// open
 #include <sys/mman.h>		// mmap
@@ -18,84 +23,117 @@
 
 
 
+#ifdef __NeXT__
+#include <mach/mach.h>
+#include <mach/mach_traps.h>
+#include <mach/mach_error.h>
+#endif
+
 #include "string.hh"
 #include "proto.hh"
 #include "warn.hh"
 #include "file-storage.hh"
 
-Mapped_file_storage::Mapped_file_storage(String s)
+Mapped_file_storage::Mapped_file_storage (String s)
 {
   data_caddr_ = 0;
   fildes_i_ = 0;
   size_off_ = 0;
-  open(s);
+  open (s);
 }
 
 char const*
-Mapped_file_storage::ch_C() const
+Mapped_file_storage::ch_C () const
 {
   return (char const*)data_caddr_;
 }
 
 void
-Mapped_file_storage::map()
+Mapped_file_storage::map ()
 {
   if (fildes_i_ == -1)
     return;
-
-  data_caddr_ = (caddr_t)mmap((void*)0, size_off_, PROT_READ, MAP_SHARED, fildes_i_, 0);
+  
+#ifdef __NeXT__
+   /* Should be #if !HAVE_MMAP && HAVE_MAP_FD...  */
+   {
+     vm_offset_t address;
+     kern_return_t r;
+ 
+     r = map_fd (fildes_i_, (vm_offset_t) 0, &address, TRUE, size_off_);
+     if (r != KERN_SUCCESS)
+       warning (String (_ ("map_fd: ")) + mach_error_string (r));
+     else
+       data_caddr_ = (char *) address;
+   }
+#else
+
+  data_caddr_ = (caddr_t)mmap ((void*)0, size_off_, PROT_READ, MAP_SHARED, fildes_i_, 0);
 
   if ((int)data_caddr_ == -1)
-    warning(String(_("can't map: error no: ")) + strerror(errno));
+    warning (String (_ ("can't map: error no: ")) + strerror (errno));
+
+#endif
 }
 
 
 void
-Mapped_file_storage::open(String name_str)
+Mapped_file_storage::open (String name_str)
 {
-  fildes_i_ = ::open(name_str.ch_C (), O_RDONLY);
+  fildes_i_ = ::open (name_str.ch_C (), O_RDONLY);
 
   if (fildes_i_ == -1)
     {
-      warning(String(_("can't open: ")) + name_str + String(": ") + strerror(errno));
+      warning (String (_ ("can't open: ")) + name_str + String (": ") + strerror (errno));
       return;
     }
 
   struct stat file_stat;
-  fstat(fildes_i_, &file_stat);
+  fstat (fildes_i_, &file_stat);
   size_off_ = file_stat.st_size;
-  map();
+  map ();
 }
 
 void
-Mapped_file_storage::unmap()
+Mapped_file_storage::unmap ()
 {
   if (data_caddr_)
     {
-      munmap(data_caddr_, size_off_);
+#ifdef __NeXT__
+       kern_return_t r;
+ 
+       r = vm_deallocate (task_self (), (vm_address_t) data_caddr_, 
+size_off_);
+       if (r != KERN_SUCCESS)
+       warning (String (_ ("vm_deallocate: ")) + mach_error_string (r));
+#else
+       munmap (data_caddr_, size_off_);
+#endif
+       
       data_caddr_ = 0;
       size_off_ = 0;
     }
 }
 
 void
-Mapped_file_storage::close()
+Mapped_file_storage::close ()
 {
-  unmap();
+  unmap ();
   if (fildes_i_)
     {
-      ::close(fildes_i_);
+      ::close (fildes_i_);
       fildes_i_ = 0;
     }
 }
 
 int
-Mapped_file_storage::length_i() const
+Mapped_file_storage::length_i () const
 {
   return size_off_;
 }
 
-Mapped_file_storage::~Mapped_file_storage()
+Mapped_file_storage::~Mapped_file_storage ()
 {
-  close();
+  close ();
 }
+#endif
diff --git a/lib/moment.cc b/lib/moment.cc
index 2557acb2a5..d521b233d3 100644
--- a/lib/moment.cc
+++ b/lib/moment.cc
@@ -11,9 +11,9 @@
 #include "moment.hh"
 
 void
-printm(Moment const &m)
+printm (Moment const &m)
 {
-    cout << String(m) << flush;
+    cout << String (m) << flush;
 }
     
 
diff --git a/lib/plet.cc b/lib/plet.cc
index 686909382a..84579eca71 100644
--- a/lib/plet.cc
+++ b/lib/plet.cc
@@ -9,20 +9,20 @@
 #include "plet.hh"
 
 
-Plet::Plet()
+Plet::Plet ()
 {
   type_i_ = 1;
   iso_i_ = 1;
 }
 
 Moment
-Plet::mom() const
+Plet::mom () const
 {
-  return  Moment(iso_i_, type_i_);
+  return  Moment (iso_i_, type_i_);
 }
 
 bool
-Plet::unit_b() const
+Plet::unit_b () const
 {
   return type_i_ == 1 && iso_i_ == 1;
 }
diff --git a/lib/simple-file-storage.cc b/lib/simple-file-storage.cc
index e09bb1699a..b80724d987 100644
--- a/lib/simple-file-storage.cc
+++ b/lib/simple-file-storage.cc
@@ -8,7 +8,7 @@
 
 #include <stdio.h>
 
-#include "file-storage.hh"
+#include "simple-file-storage.hh"
 #include "varray.hh"
 #include "string.hh"
 #include "warn.hh"
@@ -26,7 +26,7 @@
   [Some versions later] The crashes aren't caused by the mmap
   code. But no reason to take it out, is there?  */
 
-Simple_file_storage::Simple_file_storage(String s)
+Simple_file_storage::Simple_file_storage (String s)
 {
   data_p_ =0;
 
@@ -34,44 +34,44 @@ Simple_file_storage::Simple_file_storage(String s)
     let's hope that "b" opens anything binary, and does not apply
     CR/LF translation
     */
-  FILE * f =  (s.length_i ()) ?  fopen (s.ch_C(), "rb") : stdin;
+  FILE * f =  (s.length_i ()) ?  fopen (s.ch_C (), "rb") : stdin;
 
   if (!f)
     {
-      warning(_("can't open file `") + s + "'");
+      warning (_ ("can't open file `") + s + "'");
       return ;
     }
 
-  int ret = fseek(f, 0, SEEK_END);
-  len_i_ = ftell(f);
-  rewind(f);
+  int ret = fseek (f, 0, SEEK_END);
+  len_i_ = ftell (f);
+  rewind (f);
   data_p_ = new char[len_i_+1];
   data_p_[len_i_] = 0;
-  ret = fread(data_p_, sizeof(char), len_i_, f);
+  ret = fread (data_p_, sizeof (char), len_i_, f);
 
 
   if  (ret!=len_i_)
-    warning (_("Huh? got ") + String(ret) + _(", expected ")
-	     + String(len_i_) + _(" characters"));
+    warning (_ ("Huh? got ") + String (ret) + _ (", expected ")
+	     + String (len_i_) + _ (" characters"));
 
   if (f != stdin)
-    fclose(f);
+    fclose (f);
 }
 
 char const*
-Simple_file_storage::ch_C() const
+Simple_file_storage::ch_C () const
 {
   return data_p_;
 }
 
 int
-Simple_file_storage::length_i() const
+Simple_file_storage::length_i () const
 {
   return len_i_;
 }
 
 
-Simple_file_storage::~Simple_file_storage()
+Simple_file_storage::~Simple_file_storage ()
 {
   delete []data_p_;
 }
diff --git a/lib/source-file.cc b/lib/source-file.cc
index 66a13de2bb..b6153c984a 100644
--- a/lib/source-file.cc
+++ b/lib/source-file.cc
@@ -17,53 +17,53 @@
 #include "warn.hh"
 #include "windhoos-suck-suck-suck-thank-you-cygnus.hh"
 #include "source-file.hh"
-#include "file-storage.hh"
+#include "simple-file-storage.hh"
 
-Source_file::Source_file(String filename_str)
+Source_file::Source_file (String filename_str)
 {
   name_str_ = filename_str;
   istream_p_ = 0;
-  storage_p_ = new Simple_file_storage(filename_str);
+  storage_p_ = new Simple_file_storage (filename_str);
 }
 
 istream*
-Source_file::istream_l()
+Source_file::istream_l ()
 {
   /*
-    if (!name_str_.length_i())
+    if (!name_str_.length_i ())
       return &cin;
     */
 
   if (!istream_p_)
     {
-      if (length_i()) // can-t this be done without such a hack?
-	istream_p_ = new istrstream(ch_C(), length_i());
+      if (length_i ()) // can-t this be done without such a hack?
+	istream_p_ = new istrstream (ch_C (), length_i ());
       else
 	{
-	  istream_p_ = new istrstream("", 0);
-	  istream_p_->set(ios::eofbit);
+	  istream_p_ = new istrstream ("", 0);
+	  istream_p_->set (ios::eofbit);
 	}
     }
   return istream_p_;
 }
 
 String
-Source_file::file_line_no_str(char const *context_ch_C) const
+Source_file::file_line_no_str (char const *context_ch_C) const
 {
-  if  (!ch_C())
-    return _("(unknown)");
+  if  (!ch_C ())
+    return _ ("(unknown)");
   else
-    return name_str() + ": "
-      + String(line_i(context_ch_C));
+    return name_str () + ": "
+      + String (line_i (context_ch_C));
 }
 
 String
-Source_file::name_str() const
+Source_file::name_str () const
 {
   return name_str_;
 }
 
-Source_file::~Source_file()
+Source_file::~Source_file ()
 {
   delete istream_p_;
   istream_p_ = 0;
@@ -71,12 +71,12 @@ Source_file::~Source_file()
 }
 
 String
-Source_file::error_str(char const* pos_ch_C) const
+Source_file::error_str (char const* pos_ch_C) const
 {
-  char const* data_ch_C = ch_C();
-  char const * eof_C_ = data_ch_C + length_i();
-  if (!in_b(pos_ch_C))
-    return _("(position unknown)");
+  char const* data_ch_C = ch_C ();
+  char const * eof_C_ = data_ch_C + length_i ();
+  if (!in_b (pos_ch_C))
+    return _ ("(position unknown)");
 
 
   if (pos_ch_C == eof_C_)
@@ -97,8 +97,8 @@ Source_file::error_str(char const* pos_ch_C) const
 	break;
       }
 
-  //    String(char const* p, int length) is missing!?
-  String line_str((Byte const*)begin_ch_C, end_ch_C - begin_ch_C);
+  //    String (char const* p, int length) is missing!?
+  String line_str ((Byte const*)begin_ch_C, end_ch_C - begin_ch_C);
 
   int error_col_i = 0;
   char const* scan_ch_C = begin_ch_C;
@@ -108,28 +108,28 @@ Source_file::error_str(char const* pos_ch_C) const
     else
       error_col_i++;
 
-  String str = line_str.left_str(pos_ch_C - begin_ch_C)
-    + String('\n')
-    + String(' ', error_col_i)
-    + line_str.cut(pos_ch_C - begin_ch_C, INT_MAX); // String::mid should take 0 arg..
+  String str = line_str.left_str (pos_ch_C - begin_ch_C)
+    + String ('\n')
+    + String (' ', error_col_i)
+    + line_str.cut (pos_ch_C - begin_ch_C, INT_MAX); // String::mid should take 0 arg..
   return str;
 }
 
 bool
-Source_file::in_b(char const* pos_ch_C) const
+Source_file::in_b (char const* pos_ch_C) const
 {
-  return (pos_ch_C && (pos_ch_C >= ch_C()) && (pos_ch_C <= ch_C() + length_i()));
+  return (pos_ch_C && (pos_ch_C >= ch_C ()) && (pos_ch_C <= ch_C () + length_i ()));
 }
 
 
 int
-Source_file::line_i(char const* pos_ch_C) const
+Source_file::line_i (char const* pos_ch_C) const
 {
-  if (!in_b(pos_ch_C))
+  if (!in_b (pos_ch_C))
     return 0;
 
   int i = 1;
-  char const* scan_ch_C = ch_C();
+  char const* scan_ch_C = ch_C ();
   if (!scan_ch_C)
     return 0;
 
@@ -140,13 +140,13 @@ Source_file::line_i(char const* pos_ch_C) const
 }
 
 int
-Source_file::length_i() const
+Source_file::length_i () const
 {
-  return storage_p_->length_i();
+  return storage_p_->length_i ();
 }
 
 char const *
-Source_file::ch_C() const
+Source_file::ch_C () const
 {
-  return storage_p_->ch_C();
+  return storage_p_->ch_C ();
 }
diff --git a/lib/source.cc b/lib/source.cc
index 3f2daf6a23..d350b487ca 100644
--- a/lib/source.cc
+++ b/lib/source.cc
@@ -17,20 +17,20 @@
 #include "source.hh"
 #include "path.hh"
 
-Sources::Sources()
+Sources::Sources ()
 {
   path_C_= 0;
   binary_b_ = false;
 }
 
 void
-Sources::set_binary(bool bo)
+Sources::set_binary (bool bo)
 {
   binary_b_ = bo;
 }
 
 void
-Sources::set_path(File_path *f_C)
+Sources::set_path (File_path *f_C)
 {
   path_C_ = f_C;
 }
@@ -44,25 +44,25 @@ Sources::set_path(File_path *f_C)
   @return 0 if no file found
   */
 Source_file*
-Sources::get_file_l(String &file_str) //UGH
+Sources::get_file_l (String &file_str) //UGH
 {
   if (path_C_)
     {
-      String file_str_o = path_C_->find(file_str); 
+      String file_str_o = path_C_->find (file_str); 
       if ((file_str_o == "") && (file_str != ""))
 	return 0;
       file_str = file_str_o;
     }
   Source_file * f_p= (!binary_b_) ?
-    new Source_file(file_str) : new Binary_source_file(file_str);
-  add(f_p);
+    new Source_file (file_str) : new Binary_source_file (file_str);
+  add (f_p);
   return f_p;
 }
 
 void
-Sources::add(Source_file* sourcefile_p)
+Sources::add (Source_file* sourcefile_p)
 {
-  sourcefile_p_list_.bottom().add(sourcefile_p);
+  sourcefile_p_list_.bottom ().add (sourcefile_p);
 }
 
 /**
@@ -71,11 +71,11 @@ Sources::add(Source_file* sourcefile_p)
   @return 0 if not found.
   */
 Source_file*
-Sources::sourcefile_l(char const* ch_C)
+Sources::sourcefile_l (char const* ch_C)
 {
-  PCursor<Source_file*> sourcefile_l_pcur(sourcefile_p_list_.top());
-  for (; sourcefile_l_pcur.ok(); sourcefile_l_pcur++)
-    if (sourcefile_l_pcur->in_b(ch_C))	
+  PCursor<Source_file*> sourcefile_l_pcur (sourcefile_p_list_.top ());
+  for (; sourcefile_l_pcur.ok (); sourcefile_l_pcur++)
+    if (sourcefile_l_pcur->in_b (ch_C))	
       return *sourcefile_l_pcur;
   return 0;
 }
diff --git a/lib/template.cc b/lib/template.cc
index 90f9818d85..36cb118232 100644
--- a/lib/template.cc
+++ b/lib/template.cc
@@ -12,5 +12,5 @@
 #include "cursor.tcc"
 #include "list.tcc"
 
-template LIST_INSTANTIATE(void *);
-template POINTERLIST_INSTANTIATE(Source_file);
+template LIST_INSTANTIATE (void *);
+template POINTERLIST_INSTANTIATE (Source_file);
diff --git a/lib/warn.cc b/lib/warn.cc
index ade821a64f..743af06d6a 100644
--- a/lib/warn.cc
+++ b/lib/warn.cc
@@ -2,23 +2,23 @@
 #include <stream.h>
 
 void
-error(String s)
+error (String s)
 {
-    cerr <<  _("error: ") << s << "\n";
+    cerr <<  _ ("error: ") << s << "\n";
 
-    exit(1);
+    exit (1);
 }
 
 
 void
-warning(String m)
+warning (String m)
 {
-    cerr << _("warning: ") <<m <<endl;
+    cerr << _ ("warning: ") <<m <<endl;
 
 }
 
 void
-message(String m)
+message (String m)
 {
     cerr << m<<endl;
 }
diff --git a/lib/windhoos-suck-suck-suck-thank-you-cygnus.cc b/lib/windhoos-suck-suck-suck-thank-you-cygnus.cc
index 8a7fe9f8b2..c0aaab91ff 100644
--- a/lib/windhoos-suck-suck-suck-thank-you-cygnus.cc
+++ b/lib/windhoos-suck-suck-suck-thank-you-cygnus.cc
@@ -1,7 +1,7 @@
 //
 // windhoos.cc
 //
-// mmap() should work now (cygnus beta 18), but let's keep it here
+// mmap () should work now (cygnus beta 18), but let's keep it here
 // for people using old cygnus releases
 #if 0 // def _WINDOWS32
 
@@ -11,7 +11,7 @@
 #include "windhoos-suck-suck-suck-thank-you-cygnus.hh"
 
 /* 
-HANDLE CreateFileMapping(
+HANDLE CreateFileMapping (
     HANDLE hFile,	// handle to file to map 
     LPSECURITY_ATTRIBUTES lpFileMappingAttributes,	// optional security attributes 
     DWORD flProtect,	// protection for mapping object 
@@ -21,7 +21,7 @@ HANDLE CreateFileMapping(
 );	
  
 
-LPVOID MapViewOfFile(
+LPVOID MapViewOfFile (
     HANDLE hFileMappingObject,	// file-mapping object to map into address space  
     DWORD dwDesiredAccess,	// access mode 
     DWORD dwFileOffsetHigh,	// high-order 32 bits of file offset 
@@ -31,7 +31,7 @@ LPVOID MapViewOfFile(
  
 
 io.h:
-long _get_osfhandle(int filehandle);
+long _get_osfhandle (int filehandle);
 */
 
 // cygnus's gnu-win32-b17.1 does not have _get_osfhandle
@@ -46,7 +46,7 @@ static const int OSF_FACTOR_i = 8;
 
 // #define HAVE_GET_OSFHANDLE  // no we still cannot; works only with cl.exe
 long
-_get_osfhandle(int filedes_i)
+_get_osfhandle (int filedes_i)
 {
     return (long)(OSF_OFFSET_i + (filedes_i + OSF_BASE_i) * OSF_FACTOR_i);
 }
@@ -56,29 +56,29 @@ _get_osfhandle(int filedes_i)
 #include <iostream.h>
 
 caddr_t
-mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
+mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
 {
     (void)flags;
     (void)prot;
     (void)addr;
-    HANDLE osf = (HANDLE)_get_osfhandle(fd);
-    HANDLE file_handle = CreateFileMapping(osf, (void*)0, PAGE_READONLY,
+    HANDLE osf = (HANDLE)_get_osfhandle (fd);
+    HANDLE file_handle = CreateFileMapping (osf, (void*)0, PAGE_READONLY,
 	0, len, 0); 
-    return (caddr_t)MapViewOfFile(file_handle, FILE_MAP_READ, 0, offset, len);
+    return (caddr_t)MapViewOfFile (file_handle, FILE_MAP_READ, 0, offset, len);
 }
 
 
 int
-munmap(caddr_t addr, size_t len)
+munmap (caddr_t addr, size_t len)
 {
     (void)len;
-    return UnmapViewOfFile(addr);
+    return UnmapViewOfFile (addr);
 }
 
 #else // ! HAVE_GET_OSFHANDLE //
 
 caddr_t
-mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
+mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
 {
     (void)flags;
     (void)prot;
@@ -86,13 +86,13 @@ mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
     (void)offset;
     char* ch_p = new char[ len ];
     if (ch_p)
-        read(fd, (void*)ch_p, len);
+        read (fd, (void*)ch_p, len);
     return ch_p;
 }
 
 
 int
-munmap(caddr_t addr, size_t len)
+munmap (caddr_t addr, size_t len)
 {
     (void)len;
     delete (char*)addr;
diff --git a/lily/VERSION b/lily/VERSION
index e0d3c8cadf..486f034e1b 100644
--- a/lily/VERSION
+++ b/lily/VERSION
@@ -1,4 +1,4 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 1
-PATCH_LEVEL = 42
+PATCH_LEVEL = 43
 MY_PATCH_LEVEL =
diff --git a/lily/break.cc b/lily/break.cc
index 8b6241732b..04b623e883 100644
--- a/lily/break.cc
+++ b/lily/break.cc
@@ -17,9 +17,9 @@
 #include "cpu-timer.hh"
 
 String
-Col_stats::str() const {
+Col_stats::str () const {
   String s (count_i_);
-  s += _(" lines");
+  s += _ (" lines");
   if  (count_i_)
     s += String (Real (cols_i_)/count_i_, _(", (with an average of %.1f columns)"));
 
@@ -30,11 +30,11 @@ void
 Col_stats::add (Line_of_cols const& line)
 {
   count_i_++;
-  cols_i_ += line.size();
+  cols_i_ += line.size ();
 }
 
 
-Col_stats::Col_stats()
+Col_stats::Col_stats ()
 {
   count_i_ =0;
   cols_i_ =0;
@@ -43,11 +43,11 @@ Col_stats::Col_stats()
 /* **************************************************************** */
 
 Line_of_cols
-Break_algorithm::all_cols() const
+Break_algorithm::all_cols () const
 {
   Line_of_cols retval;
-  for (PCursor<Paper_column*> c (pscore_l_->col_p_list_.top());
-       c.ok(); c++)
+  for (PCursor<Paper_column*> c (pscore_l_->col_p_list_.top ());
+       c.ok (); c++)
     {
 
       retval.push (c);
@@ -56,17 +56,17 @@ Break_algorithm::all_cols() const
 }
 
 Array<int>
-Break_algorithm::find_break_indices() const
+Break_algorithm::find_break_indices () const
 {
-  Line_of_cols all (all_cols());
+  Line_of_cols all (all_cols ());
   Array<int> retval;
 
-  for (int i=0; i < all.size(); i++)
+  for (int i=0; i < all.size (); i++)
     if (all[i]->breakable_b_)
       retval.push (i);
 
   if (linelength <=0)
-    while (retval.size() >2)
+    while (retval.size () >2)
       retval.del (1);
 
   return retval;
@@ -74,18 +74,18 @@ Break_algorithm::find_break_indices() const
 
 ///  return all breakable columns
 Line_of_cols
-Break_algorithm::find_breaks() const
+Break_algorithm::find_breaks () const
 {
-  Line_of_cols all (all_cols());
+  Line_of_cols all (all_cols ());
   Line_of_cols retval;
 
-  for (int i=0; i < all.size(); i++)
+  for (int i=0; i < all.size (); i++)
     if (all[i]->breakable_b_)
       retval.push (all[i]);
 
 
   if (linelength <=0)
-    while (retval.size() >2)
+    while (retval.size () >2)
       retval.del (1);
 
   return retval;
@@ -96,25 +96,25 @@ Break_algorithm::find_breaks() const
 
 
 Line_spacer*
-Break_algorithm::generate_spacing_problem (Line_of_cols curline) const
+Break_algorithm::generate_spacing_problem (Line_of_cols curline, Interval line) const
 {
-  Line_spacer * sp= (*get_line_spacer)();
+  Line_spacer * sp= (*get_line_spacer) ();
 
   sp->paper_l_ = pscore_l_->paper_l_;
-  sp->add_column (curline[0], true, 0.0);
-  for (int i=1; i< curline.size()-1; i++)
+  sp->add_column (curline[0], true, line.min ());
+  for (int i=1; i< curline.size ()-1; i++)
     sp->add_column (curline[i]);
 
-  if (linelength > 0)
-    sp->add_column (curline.top(), true, linelength);
+  if (line.length () > 0)
+    sp->add_column (curline.top (), true, line.max ());
   else
-    sp->add_column (curline.top());
+    sp->add_column (curline.top ());
 
-  sp->prepare();
+  sp->prepare ();
   return sp;
 }
 
-Break_algorithm::Break_algorithm()
+Break_algorithm::Break_algorithm ()
 {
   pscore_l_ = 0;
   get_line_spacer =0;
@@ -125,8 +125,8 @@ void
 Break_algorithm::set_pscore (Paper_score*s)
 {
   pscore_l_ = s;
-  linelength = s->paper_l_->linewidth_f();
-  do_set_pscore();
+  linelength = s->paper_l_->linewidth_f ();
+  do_set_pscore ();
 }
 
 bool
@@ -136,25 +136,25 @@ Break_algorithm::feasible (Line_of_cols curline) const
     return true;
 
   Real l =0;
-  for (int i=0; i < curline.size(); i++)
-    l +=curline[i]->width().length ();
+  for (int i=0; i < curline.size (); i++)
+    l +=curline[i]->width ().length ();
   return l < linelength;
 }
 
 void
-Break_algorithm::problem_OK() const
+Break_algorithm::problem_OK () const
 {
-  if (!pscore_l_->col_p_list_.size())
+  if (!pscore_l_->col_p_list_.size ())
     error (_("Score does not have any columns"));
-  OK();
+  OK ();
 }
 
 void
-Break_algorithm::OK() const
+Break_algorithm::OK () const
 {
 #ifndef NDEBUG
   iter_top (pscore_l_->col_p_list_,start);
-  PCursor<Paper_column *> end (pscore_l_->col_p_list_.bottom());
+  PCursor<Paper_column *> end (pscore_l_->col_p_list_.bottom ());
 
   assert (start->breakable_b_);
   assert (end->breakable_b_);
@@ -162,23 +162,23 @@ Break_algorithm::OK() const
 }
 
 Array<Col_hpositions>
-Break_algorithm::solve() const
+Break_algorithm::solve () const
 {
   Cpu_timer timer;
 
-  Array<Col_hpositions> h= do_solve();
+  Array<Col_hpositions> h= do_solve ();
 
   if (approx_stats_.count_i_)
-    *mlog << _("\nApproximated: ") << approx_stats_.str() << "\n";
+    *mlog << _ ("\nApproximated: ") << approx_stats_.str () << "\n";
   if (exact_stats_.count_i_)
-    *mlog << _("Calculated exactly: ") << exact_stats_.str() << "\n";
-  *mlog << _("Time: ") << String(timer.read (), "%.2f") << _(" seconds\n");
+    *mlog << _ ("Calculated exactly: ") << exact_stats_.str () << "\n";
+  *mlog << _ ("Time: ") << String (timer.read (), "%.2f") << _ (" seconds\n");
 
   return h;
 }
 
 void
-Break_algorithm::do_set_pscore()
+Break_algorithm::do_set_pscore ()
 {
 
 }
diff --git a/lily/debug.cc b/lily/debug.cc
index 39b40c7764..c369f070ee 100644
--- a/lily/debug.cc
+++ b/lily/debug.cc
@@ -6,7 +6,6 @@
   (c) 1996,98 Han-Wen Nienhuys <hanwen@stack.nl>
   
  */
-#include <malloc.h>
 #include <fstream.h>
 #include <signal.h>
 #include <std/new.h>
@@ -75,8 +74,6 @@ bool check_malloc_b = false;
 // #define MEMORY_PARANOID
 
 #ifdef MEMORY_PARANOID
-
-
 void *
 operator new (size_t size)
 {
diff --git a/lily/gourlay-breaking.cc b/lily/gourlay-breaking.cc
index 3daa4ab12e..05c2a722b3 100644
--- a/lily/gourlay-breaking.cc
+++ b/lily/gourlay-breaking.cc
@@ -25,11 +25,13 @@ struct Break_node {
     
     */
   int prev_break_i_;
+  int line_i_;
   Real energy_f_;
   Col_hpositions line_config_;
-  Break_node() 
+  Break_node () 
   {
     prev_break_i_ = -1;
+    line_i_ = 0;
   }
 };
 
@@ -38,23 +40,24 @@ struct Break_node {
  */
 
 Array<Col_hpositions>
-Gourlay_breaking::do_solve() const
+Gourlay_breaking::do_solve () const
 {
   Array<Break_node> optimal_paths;
-  Line_of_cols all = all_cols();
-  Array<int> breaks = find_break_indices();
+  Line_of_cols all = all_cols ();
+  Array<int> breaks = find_break_indices ();
   
-  optimal_paths.set_size (breaks.size());
+  optimal_paths.set_size (breaks.size ());
 
   Break_node first_node ;
   first_node.prev_break_i_ = -1;
   first_node.line_config_.energy_f_ = 0;
+  first_node.line_i_ = 0;
   
   optimal_paths[0] = first_node; 
   int break_idx=1;
 
   
-  for (; break_idx< breaks.size(); break_idx++) 
+  for (; break_idx< breaks.size (); break_idx++) 
     {
       Array<int> candidates;
       Array<Col_hpositions> candidate_lines;
@@ -75,9 +78,9 @@ Gourlay_breaking::do_solve() const
 	    continue;
 	    
 	  Line_of_cols line = all.slice (breaks[start_idx], breaks[break_idx]+1);
-	    
-	  line[0] = line[0]->postbreak_l();
-	  line.top() = line.top ()->prebreak_l();
+
+	  line[0] = line[0]->postbreak_l ();
+	  line.top () = line.top ()->prebreak_l ();
 	    
 	  if (!feasible (line))
 	    break;
@@ -85,11 +88,12 @@ Gourlay_breaking::do_solve() const
 	  Col_hpositions approx;
 	  approx.cols = line;
 	    
-	  approx.spacer_l_ = generate_spacing_problem (line);
-	  spacer_p_list.bottom().add (approx.spacer_l_);
+	  approx.spacer_l_ = generate_spacing_problem (line, 
+	    pscore_l_->paper_l_->line_dimensions_int (optimal_paths[start_idx].line_i_));
+	  spacer_p_list.bottom ().add (approx.spacer_l_);
 
-	  ((Break_algorithm*)this)->approx_stats_.add (approx.cols);
-	  approx.approximate_solve_line();
+	  ( (Break_algorithm*)this)->approx_stats_.add (approx.cols);
+	  approx.approximate_solve_line ();
 	    
 	  if  (approx.energy_f_  > energy_bound_f_)
 	    {
@@ -105,7 +109,7 @@ Gourlay_breaking::do_solve() const
 	    
       int minimal_j = -1;
       Real minimal_energy = infinity_f;
-      for (int j=0; j < candidates.size(); j++) 
+      for (int j=0; j < candidates.size (); j++) 
 	{
 	  int start = candidates[j];
 	  if (optimal_paths[start].line_config_.energy_f_
@@ -115,8 +119,8 @@ Gourlay_breaking::do_solve() const
 
 	  if (!candidate_lines[j].satisfies_constraints_b_) 
 	    {
-	      candidate_lines[j].solve_line();
-	      ((Break_algorithm*)this)->exact_stats_.add (candidate_lines[j].cols);
+	      candidate_lines[j].solve_line ();
+	      ( (Break_algorithm*)this)->exact_stats_.add (candidate_lines[j].cols);
 	    }
 	    
 	  Real this_energy 
@@ -139,9 +143,11 @@ Gourlay_breaking::do_solve() const
 	{
 	  optimal_paths[break_idx].prev_break_i_ = candidates[minimal_j];
 	  optimal_paths[break_idx].line_config_ = candidate_lines[minimal_j];
+	  optimal_paths[break_idx].line_i_ = 
+	    optimal_paths[optimal_paths[break_idx].prev_break_i_].line_i_ + 1;
 	}
 
-      if (!(break_idx % HAPPY_DOTS_I))
+      if (! (break_idx % HAPPY_DOTS_I))
 	*mlog << "[" << break_idx << "]"<<flush;
     }
 
@@ -153,13 +159,13 @@ Gourlay_breaking::do_solve() const
   Array<Col_hpositions> lines;
 
   /* skip 0-th element, since it is a "dummy" elt*/
-  for (int i = optimal_paths.size()-1; i> 0;) 
+  for (int i = optimal_paths.size ()-1; i> 0;) 
     {
       final_breaks.push (i);
       assert (i > optimal_paths[i].prev_break_i_);
 
       // there was no "feasible path"
-      if (!optimal_paths[i].line_config_.config.size()) {
+      if (!optimal_paths[i].line_config_.config.size ()) {
 	final_breaks.set_size (0);
 	break;
       }
@@ -167,14 +173,14 @@ Gourlay_breaking::do_solve() const
     }
 
 
-  for (int i= final_breaks.size(); i--;) 
+  for (int i= final_breaks.size (); i--;) 
     lines.push (optimal_paths[final_breaks[i]].line_config_);
   
   return lines;
 }
 
 
-Gourlay_breaking::Gourlay_breaking()
+Gourlay_breaking::Gourlay_breaking ()
 {
   get_line_spacer = Spring_spacer::constructor;
   energy_bound_f_ = infinity_f;
@@ -182,7 +188,7 @@ Gourlay_breaking::Gourlay_breaking()
 }
 
 void
-Gourlay_breaking::do_set_pscore()
+Gourlay_breaking::do_set_pscore ()
 {
   energy_bound_f_ = pscore_l_->paper_l_->get_var ("gourlay_energybound");
   max_measures_i_ =int (rint (pscore_l_->paper_l_->get_var ("gourlay_maxmeasures")));
diff --git a/lily/include/break.hh b/lily/include/break.hh
index dcc3f63908..c6c9058e51 100644
--- a/lily/include/break.hh
+++ b/lily/include/break.hh
@@ -10,11 +10,10 @@
 #ifndef BREAK_HH
 #define BREAK_HH
 #include "varray.hh"
+#include "interval.hh"
 #include "lily-proto.hh"
 #include "colhpos.hh"
 
-
-
 /**
   Statistics for the number of columns calced.
  */
@@ -57,10 +56,11 @@ protected:
   bool feasible (Line_of_cols) const;
     
 
-  Line_spacer* generate_spacing_problem (Line_of_cols) const;
+  Line_spacer* generate_spacing_problem (Line_of_cols, Interval) const;
 
   virtual Array<Col_hpositions> do_solve() const=0;
-   virtual void do_set_pscore();
+  virtual void do_set_pscore();
+
 public:
   Col_stats approx_stats_;
   Col_stats exact_stats_;
diff --git a/lily/include/main.hh b/lily/include/main.hh
index 1a95d9d203..5ca8f5ad8c 100644
--- a/lily/include/main.hh
+++ b/lily/include/main.hh
@@ -18,6 +18,7 @@ void set_default_output (String s);
 String find_file (String);
 String get_version_str();
 String get_version_number_str();
+void call_constructors ();
 extern Sources* source_global_l;
 extern bool no_paper_global_b;
 extern int exit_status_i_;
diff --git a/lily/include/paper-def.hh b/lily/include/paper-def.hh
index 162bb656e6..4bf3b9589c 100644
--- a/lily/include/paper-def.hh
+++ b/lily/include/paper-def.hh
@@ -14,6 +14,8 @@
 #include "real.hh"
 
 #include "moment.hh"
+#include "varray.hh"
+#include "interval.hh"
 #include "music-output-def.hh"
 
 /** 
@@ -39,9 +41,11 @@ class Paper_def : public Music_output_def {
 protected:
   VIRTUAL_COPY_CONS(Paper_def,Music_output_def);
 public:    
-  virtual ~Paper_def();
+  virtual ~Paper_def ();
   DECLARE_MY_RUNTIME_TYPEINFO;
 
+  Array<Interval> shape_int_a_;
+
   /**
     Set or overwrite a variable
    */
@@ -50,39 +54,40 @@ public:
     Read a variable.  Crash if it doesn't exist.
    */
   Real get_var (String) const;
-  void reinit();
-  Paper_def();
+  void reinit ();
+  Paper_def ();
   void set (Lookup*);
 
   Paper_def (Paper_def const&);
   /// The distance between beams
-  Real interbeam_f() const;
+  Real interbeam_f () const;
   /**
     The distance between lines
     */
-  Real interline_f() const;
+  Real interline_f () const;
   /// half the distance between lines
-  Real internote_f() const;
+  Real internote_f () const;
 
   /// thickness of the standard line 
-  Real rule_thickness() const;
-  Real linewidth_f() const;
+  Real rule_thickness () const;
+  Interval line_dimensions_int (int) const;
+  Real linewidth_f () const;
   /// height of the staff
-  Real standard_height() const;
+  Real standard_height () const;
 
   /// width of a crotchet ball
-  Real note_width() const;
-  void print() const;
+  Real note_width () const;
+  void print () const;
 
-  Lookup const * lookup_l();	// TODO naming
+  Lookup const * lookup_l ();	// TODO naming
 
   /** convert a duration to an idealspacing
     influence using the geometric_ and  parameters.
     */
   Real duration_to_dist (Moment, Real) const;
-  Real geometric_spacing(Moment) const;
-  Real arithmetic_constant(Moment minimal_mom) const;
-  Real arithmetic_spacing( Moment mom,Real constant) const;
+  Real geometric_spacing (Moment) const;
+  Real arithmetic_constant (Moment minimal_mom) const;
+  Real arithmetic_spacing (Moment mom,Real constant) const;
   virtual int get_next_default_count () const;
   String TeX_output_settings_str () const;
 };
diff --git a/lily/include/plet-spanner.hh b/lily/include/plet-spanner.hh
index cae64729d5..4f2fa66eab 100644
--- a/lily/include/plet-spanner.hh
+++ b/lily/include/plet-spanner.hh
@@ -26,11 +26,6 @@ public:
 protected:
   virtual Molecule* brew_molecule_p () const;
  
-private:
-
-
-protected:
-
   DECLARE_MY_RUNTIME_TYPEINFO;
   SCORE_ELEM_CLONE(Plet_spanner);
 
@@ -38,6 +33,7 @@ protected:
   virtual void do_post_processing ();
   virtual void set_default_dir ();
   virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+  Plet_spanner (Plet_spanner const&);
 };
 
 #endif // PLET_SPANNER_HH
diff --git a/lily/include/stem.hh b/lily/include/stem.hh
index d150eb1e76..8020d14f72 100644
--- a/lily/include/stem.hh
+++ b/lily/include/stem.hh
@@ -86,6 +86,7 @@ public:
   void do_print() const;
   void set_stemend (Real);
   Direction get_default_dir();
+  Direction get_dir ();
 
   int get_center_distance(Direction);
   void set_default_dir();
@@ -95,7 +96,7 @@ public:
 
   Real stem_length_f() const;
   Real stem_end_f() const;
-  Real stem_start_f() const;
+  Real stem_begin_f() const;
   Real note_delta_f () const;
 
   bool invisible_b() const;
diff --git a/lily/include/translator.hh b/lily/include/translator.hh
index baa0718366..c2ddcb131a 100644
--- a/lily/include/translator.hh
+++ b/lily/include/translator.hh
@@ -101,15 +101,22 @@ protected:
  */
 #define ADD_THIS_TRANSLATOR(c)				\
 struct c ## init {					\
-    c ## init() {					\
-         Translator *t = new c;\
+   static Translator *ctor ()\
+  {\
+        Translator *t = new c;\
         t-> type_str_ = c::static_name ();\
-	add_translator (t);\
+        return t;\
+    }\
+    c ## init() {					\
+       add_constructor (ctor);\
     }							\
 } _ ## c ## init;
 
+typedef Translator *(*Translator_ctor) ();
+
 extern Dictionary<Translator*> *global_translator_dict_p;
 void add_translator (Translator*trans_p);
+void add_constructor (Translator_ctor ctor);
 
 Translator*get_translator_l (String s);
 
diff --git a/lily/lexer.l b/lily/lexer.l
index 851e21c2e1..ab97828bc1 100644
--- a/lily/lexer.l
+++ b/lily/lexer.l
@@ -28,6 +28,7 @@
 #include "string-convert.hh"
 #include "my-lily-lexer.hh"
 #include "varray.hh"
+#include "interval.hh"
 #include "parser.hh"
 #include "debug.hh"
 #include "parseconstruct.hh"
diff --git a/lily/main.cc b/lily/main.cc
index 17d1997dc5..85968ddb14 100644
--- a/lily/main.cc
+++ b/lily/main.cc
@@ -45,7 +45,7 @@ Long_option_init theopts[] = {
 };
 
 void
-usage()
+usage ()
 {
   cout <<
     _("Usage: lilypond [options] [mudela-files]\n"
@@ -83,7 +83,7 @@ usage()
 }
 
 void
-notice()
+notice ()
 {
   cout <<
     _("\n"
@@ -132,7 +132,7 @@ do_one_file (String init_str, String file_str)
     parser.set_version_check (version_ignore_b);
     parser.parse_file (init_str, file_str);
     
-    if (file_str.length_i() && file_str[0] != '-')
+    if (file_str.length_i () && file_str[0] != '-')
       {
 	String a,b,c,d;
 	split_path (file_str, a, b, c, d);
@@ -146,7 +146,7 @@ do_one_file (String init_str, String file_str)
 	exit_status_i_  = 1;
       }
     else
-      do_scores();
+      do_scores ();
     clear_scores ();
   }
   source_global_l = 0;
@@ -155,14 +155,15 @@ do_one_file (String init_str, String file_str)
 void
 identify ()
 {
-  cout << get_version_str() << endl;
+  cout << get_version_str () << endl;
 }
 
 int
 main (int argc, char **argv)
 {
   identify ();
-  debug_init();		// should be first
+  call_constructors ();
+  debug_init ();		// should be first
 
 
   // must override (come before) "/usr/local/share/lilypond"!
@@ -178,7 +179,7 @@ main (int argc, char **argv)
   Getopt_long oparser (argc, argv,theopts);
   String init_str ("lily-init.ly");
 
-  while (Long_option_init const * opt = oparser())
+  while (Long_option_init const * opt = oparser ())
     {
       switch (opt->shortname)
 	{
@@ -189,7 +190,7 @@ main (int argc, char **argv)
 	  default_outname_base_global = oparser.optional_argument_ch_C_;
 	  break;
 	case 'w':
-	  notice();
+	  notice ();
 	  exit (0);
 	  break;
 	case 'I':
@@ -199,7 +200,7 @@ main (int argc, char **argv)
 	  init_str = oparser.optional_argument_ch_C_;
 	  break;
 	case 'h':
-	  usage();
+	  usage ();
 	  exit (0);
 	  break;
 	case 'V':
@@ -222,7 +223,7 @@ main (int argc, char **argv)
 
   int p=0;
   const char *arg ;
-  while ((arg= oparser.get_next_arg()))
+  while ((arg= oparser.get_next_arg ()))
     {
       String f (arg);
       destill_inname (f);
@@ -241,7 +242,7 @@ main (int argc, char **argv)
 void
 destill_inname (String &name_str_r)
 {
-  if (name_str_r.length_i())
+  if (name_str_r.length_i ())
     {
       if (name_str_r[ 0 ] != '-')
 	{
diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc
index 2a8760ee52..1aa7bb77e9 100644
--- a/lily/my-lily-lexer.cc
+++ b/lily/my-lily-lexer.cc
@@ -52,6 +52,7 @@ static Keyword_ent the_key_tab[]={
   {"pt", PT_T},
   {"score", SCORE},
   {"script", SCRIPT},
+  {"shape", SHAPE},
   {"skip", SKIP},
   {"staff", STAFF},
   {"table", TABLE},
diff --git a/lily/paper-def.cc b/lily/paper-def.cc
index c3568f1b4d..92b126428c 100644
--- a/lily/paper-def.cc
+++ b/lily/paper-def.cc
@@ -54,8 +54,23 @@ Paper_def::get_var (String s) const
   return real_vars_p_->elem (s);
 }
 
+Interval
+Paper_def::line_dimensions_int (int n) const
+{
+  if (!shape_int_a_.size ())    
+    if (n)
+      return Interval (0, linewidth_f ());
+    else
+      return Interval (get_var ("indent"), linewidth_f ());
+
+  if (n >= shape_int_a_.size ())
+    n = shape_int_a_.size () -1;
+
+  return shape_int_a_[n];
+}
+
 Real
-Paper_def::linewidth_f() const
+Paper_def::linewidth_f () const
 {
   return get_var ("linewidth");
 }
diff --git a/lily/parser.y b/lily/parser.y
index 8dea7f982a..2480a041e6 100644
--- a/lily/parser.y
+++ b/lily/parser.y
@@ -56,6 +56,7 @@
 
 
 %union {
+    Array<Interval>* intarr;
     Array<Melodic_req*> *melreqvec;/* should clean up naming */
     Array<String> * strvec;
     Array<int> *intvec;
@@ -147,6 +148,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %token PT_T
 %token SCORE
 %token SCRIPT
+%token SHAPE
 %token SKIP
 %token SPANDYNAMIC
 %token STAFF
@@ -223,6 +225,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <request>	post_request command_req verbose_command_req
 %type <request>	script_req  dynamic_req
 %type <score>	score_block score_body
+%type <intarr>	shape_array
 %type <script>	script_definition script_body mudela_script gen_script_def
 %type <textdef> text_def
 %type <string>	script_abbreviation
@@ -491,11 +494,23 @@ paper_body:
 		$$-> assign_translator (*$2, $4);
 		delete $2;
 	}
+	| paper_body SHAPE '=' shape_array ';' {
+		$$->shape_int_a_ = *$4;
+		delete $4;
+	}
 	| paper_body error {
 
 	}
 	;
 
+shape_array:
+	/* empty */ {
+		$$ = new Array<Interval>;
+	}
+	| shape_array dim dim {
+		$$->push(Interval($2, $2 + $3));
+	};
+
 /*
 	MIDI
 */
@@ -830,16 +845,22 @@ close_plet_parens:
 		$$ = MAEBTELP;
 		THIS->plet_.type_i_ = $4;
 		THIS->plet_.iso_i_ = $2;
+		THIS->default_duration_.plet_.type_i_ = $4;
+		THIS->default_duration_.plet_.iso_i_ = $2;
 	}
 	| TELP {
 		$$ = TELP;
 		THIS->plet_.type_i_ = 1;
 		THIS->plet_.iso_i_ = 1;
+		THIS->default_duration_.plet_.iso_i_ = 1;
+		THIS->default_duration_.plet_.type_i_ = 1;
 	}
 	| TELP INT '/' INT {
 		$$ = TELP;
 		THIS->plet_.type_i_ = $4;
 		THIS->plet_.iso_i_ = $2;
+		THIS->default_duration_.plet_.type_i_ = $4;
+		THIS->default_duration_.plet_.iso_i_ = $2;
 	}
 	;
 
@@ -880,11 +901,15 @@ open_plet_parens:
 		$$ = BEAMPLET;
 		THIS->plet_.type_i_ = $4;
 		THIS->plet_.iso_i_ = $2;
+		THIS->default_duration_.plet_.type_i_ = $4;
+		THIS->default_duration_.plet_.iso_i_ = $2;
 	}
 	| PLET INT '/' INT {
 		$$ = PLET;
 		THIS->plet_.type_i_ = $4;
 		THIS->plet_.iso_i_ = $2;
+		THIS->default_duration_.plet_.type_i_ = $4;
+		THIS->default_duration_.plet_.iso_i_ = $2;
 	}
 	;
 
@@ -1048,8 +1073,6 @@ entered_notemode_duration:
 notemode_duration:
 	entered_notemode_duration {
 		$$ = $1;
-		$$->plet_.type_i_ *= THIS->plet_.type_i_;
-		$$->plet_.iso_i_ *= THIS->plet_.iso_i_;
 	}
 	;
 
@@ -1060,6 +1083,7 @@ explicit_steno_duration:
 			THIS->parser_error ("Not a duration");
 		else {
 			$$->durlog_i_ = Duration_convert::i2_type ($1);
+			$$->set_plet (THIS->default_duration_);
 		     }
 	}
 	| DURATION_IDENTIFIER	{
@@ -1069,10 +1093,10 @@ explicit_steno_duration:
 		$$->dots_i_ ++;
 	}
 	| explicit_steno_duration '*' int  {
-		$$->plet_.iso_i_ *= $3;
+		$$->plet_.iso_i_ = $3;
 	}
 	| explicit_steno_duration '/' int {
-		$$->plet_.type_i_ *= $3;
+		$$->plet_.type_i_ = $3;
 	}
 	;
 
diff --git a/lily/plet-engraver.cc b/lily/plet-engraver.cc
index 16caaf6333..41f154ed92 100644
--- a/lily/plet-engraver.cc
+++ b/lily/plet-engraver.cc
@@ -65,7 +65,8 @@ Plet_engraver::do_removal_processing ()
   if (plet_spanner_p_)
     {
       span_reqs_drul_[LEFT]->warning (_("unterminated plet"));
-      typeset_element (plet_spanner_p_);
+      plet_spanner_p_->unlink ();
+      delete plet_spanner_p_;
       plet_spanner_p_ = 0;
     }
 }
diff --git a/lily/plet-spanner.cc b/lily/plet-spanner.cc
index 1290f63cf9..e68bc00079 100644
--- a/lily/plet-spanner.cc
+++ b/lily/plet-spanner.cc
@@ -30,6 +30,13 @@ Plet_spanner::Plet_spanner ()
   tdef_p_->style_str_ = "italic";
 }
 
+Plet_spanner::Plet_spanner (Plet_spanner const& c)
+  : Bow (c)
+{
+  tdef_p_ = new Text_def (*c.tdef_p_);
+  stem_l_drul_ = c.stem_l_drul_;
+}
+
 Plet_spanner::~Plet_spanner ()
 {
   delete tdef_p_;
@@ -43,24 +50,18 @@ Plet_spanner::brew_molecule_p () const
   
   Real dy_f = dy_f_drul_[RIGHT] - dy_f_drul_[LEFT];
   
-  // ugh
-  Real nwc_f = (dir_ > 0 ? paper ()->note_width () : 0) * 0.8;
-  
   w += (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]);
   
   Atom a = paper ()->lookup_l ()->plet (dy_f, w, dir_);
 
-  a.translate (Offset ( (dx_f_drul_[LEFT] + nwc_f), dy_f_drul_[LEFT]));
+  a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]));
   mol_p->add (a);
 
   Real interline_f = paper ()->interline_f ();
-  Real numy_f = (dir_ > 0 ? 0 : -interline_f / 2);
-  Real numx_f = interline_f / 1.5;
+  Real numy_f = (dir_ > 0 ? 0 : -interline_f) + dir_ * interline_f / 2;
   Atom num (tdef_p_->get_atom (paper (), CENTER));
-  num.translate (Offset (width ().length ()/ 2 + nwc_f - numx_f 
-			 + dx_f_drul_[LEFT], 
-			 dy_f_drul_[LEFT] + dy_f / width ().length () / 2 
-			 + dir_ * interline_f / 2 + numy_f));
+  num.translate (Offset (width ().length ()/ 2 + dx_f_drul_[LEFT], 
+    dy_f_drul_[LEFT] + dy_f / 2 + numy_f));
   mol_p->add (num);
 
   return mol_p;
@@ -85,15 +86,22 @@ void
 Plet_spanner::do_post_processing ()
 {
   Real interline_f = paper ()->interline_f ();
+  Real nh_f = interline_f / 2;
   assert (stem_l_drul_[LEFT] || stem_l_drul_[RIGHT]);
 
+  // ugh
+  Real nw_f = paper ()->note_width () * 0.8;
+
   Direction d = LEFT;
   do
     {
-      dy_f_drul_[d] = .5 * interline_f * (stem_l_drul_[d] 
-					  ? stem_l_drul_[d]->stem_end_f ()
-					  : stem_l_drul_[(Direction)-d]->stem_end_f ());
+      Stem* s = stem_l_drul_[d] ? stem_l_drul_[d] : stem_l_drul_[(Direction)-d];
+      dy_f_drul_[d] = dir_ == s->get_dir () ? s->stem_end_f ()
+      	: s->stem_begin_f () + dir_ * nh_f / 2;
+      dy_f_drul_[d] *= .5 * interline_f;
       dy_f_drul_[d] += dir_ * interline_f;
+      if (d == RIGHT)
+        dx_f_drul_[d] = nw_f;
     }
   while ( (d *= -1) != LEFT);
 }
diff --git a/lily/rest-collision.cc b/lily/rest-collision.cc
index 0be9090d2c..f1263ffcbe 100644
--- a/lily/rest-collision.cc
+++ b/lily/rest-collision.cc
@@ -59,7 +59,7 @@ Rest_collision::do_post_processing()
   // ugh, Stem::stem_start vs Stem::stem_end
   int pos = (int)(stem_l->stem_end_f() - midpos) - dir_i * stem_length_i;
 #else // nogo: stem_start not set for rests?
-  int pos = (stem_l->stem_start_f() - midpos) + dir_i * 2;
+  int pos = (stem_l->stem_begin_f() - midpos) + dir_i * 2;
 #endif
   rest_l_arr_[0]->translate_rests (pos);	
 }
diff --git a/lily/stem-info.cc b/lily/stem-info.cc
index 89cd395c0b..452d61786a 100644
--- a/lily/stem-info.cc
+++ b/lily/stem-info.cc
@@ -50,7 +50,7 @@ Stem_info::Stem_info (Stem const *s)
   Real interbeam_f = s->paper()->interbeam_f () / 2;
          
   /* well eh, huh?
-     idealy_f_  = dir_ * s->stem_start_f() + beams_i_ * interbeam_f; 
+     idealy_f_  = dir_ * s->stem_begin_f() + beams_i_ * interbeam_f; 
      if (beams_i_ < 3)
      idealy_f_ += 2 * interline_f;
      else
@@ -59,7 +59,7 @@ Stem_info::Stem_info (Stem const *s)
 
   idealy_f_  = dir_ * s->stem_end_f();
 
-  miny_f_ = dir_ * s->stem_start_f() + notehead_y + beams_i_ * interbeam_f;
+  miny_f_ = dir_ * s->stem_begin_f() + notehead_y + beams_i_ * interbeam_f;
 
   idealy_f_ =  miny_f_ >? idealy_f_;
   //    assert (miny_f_ <= idealy_f_);
diff --git a/lily/stem.cc b/lily/stem.cc
index 92e5ca0c51..5a74da6df8 100644
--- a/lily/stem.cc
+++ b/lily/stem.cc
@@ -73,7 +73,7 @@ Stem::stem_length_f () const
 }
 
 Real
-Stem::stem_start_f () const
+Stem::stem_begin_f () const
 {
   return yextent_drul_[Direction(-dir_)];
 }
@@ -140,6 +140,11 @@ Stem::get_default_dir ()
     : UP;
 }
 
+Direction
+Stem::get_dir ()
+{
+  return dir_;
+}
 
 void
 Stem::set_default_dir ()
diff --git a/lily/translator-ctors.cc b/lily/translator-ctors.cc
index f39604f9ca..2da67c365d 100644
--- a/lily/translator-ctors.cc
+++ b/lily/translator-ctors.cc
@@ -34,3 +34,25 @@ get_translator_l (String s)
   error (_("Unknown translator `") + s +"\'");
   return 0;
 }
+
+Array<Translator_ctor> *ctor_global_static_arr_p_;
+
+
+/*
+  Very special greetings go out to Steve Jobs for creating a system 
+  that doesn't handle global construction correctly.
+ */
+void
+add_constructor (Translator_ctor c)
+{
+  if (!ctor_global_static_arr_p_)
+    ctor_global_static_arr_p_ = new Array<Translator_ctor>;
+  ctor_global_static_arr_p_->push (c);
+}
+
+void
+call_constructors ()
+{
+  for (int i=0; i < ctor_global_static_arr_p_->size (); i++)
+    add_translator (ctor_global_static_arr_p_->elem (i) ());
+}
diff --git a/lily/translator.cc b/lily/translator.cc
index 58b4c58917..4229f61600 100644
--- a/lily/translator.cc
+++ b/lily/translator.cc
@@ -103,23 +103,23 @@ Translator::creation_processing ()
 }
 
 void
-Translator::post_move_processing()
+Translator::post_move_processing ()
 {
   if (status >= MOVE_INITED)
     return;
 
-  creation_processing();
-  do_post_move_processing();
+  creation_processing ();
+  do_post_move_processing ();
   status = MOVE_INITED;
 }
 
 void
-Translator::removal_processing()
+Translator::removal_processing ()
 {
   if (status == ORPHAN)
     return;
-  creation_processing();
-  do_removal_processing();
+  creation_processing ();
+  do_removal_processing ();
   // elegancy ...
   // status = ORPHAN;
 }
@@ -129,27 +129,27 @@ bool
 Translator::try_request (Request * r)
 {
   if (status < MOVE_INITED)
-    post_move_processing();
+    post_move_processing ();
 
   return do_try_request (r);
 }
 
 void
-Translator::process_requests()
+Translator::process_requests ()
 {
   if (status < PROCESSED_REQS)
-    post_move_processing();
+    post_move_processing ();
   else if (status >= PROCESSED_REQS)
     return; 
   
   status = PROCESSED_REQS;
-  do_process_requests();
+  do_process_requests ();
 }
 
 void
-Translator::pre_move_processing()
+Translator::pre_move_processing ()
 {
-  do_pre_move_processing();
+  do_pre_move_processing ();
   status = CREATION_INITED;
 }
 
diff --git a/lily/word-wrap.cc b/lily/word-wrap.cc
index cc8710501e..6b7abf398b 100644
--- a/lily/word-wrap.cc
+++ b/lily/word-wrap.cc
@@ -7,6 +7,7 @@
 */
 
 #include "word-wrap.hh"
+#include "paper-def.hh"
 #include "p-score.hh"
 #include "debug.hh"
 #include "p-col.hh"
@@ -31,12 +32,14 @@ Word_wrap::do_solve() const
   assert (breakpoints.size()>=2);
 
   int break_idx_i=0;
+  int line_no_i = 0;
   while (break_idx_i < breakpoints.size() -1)
     {
       Col_hpositions minimum;
       Col_hpositions current;
 
       // do  another line
+      line_no_i ++;
       Paper_column *post = breakpoints[break_idx_i]->postbreak_l();
       current.add (post);
       curcol++;		// skip the breakable.
@@ -53,7 +56,8 @@ Word_wrap::do_solve() const
 	    }
 	  current.add (breakpoints[break_idx_i]->prebreak_l());
 
-	  current.spacer_l_ = generate_spacing_problem (current.cols);
+	  current.spacer_l_ = generate_spacing_problem (current.cols, 
+	    pscore_l_->paper_l_->line_dimensions_int (line_no_i));
 
 	  // try to solve
 	  if (!feasible (current.cols))
diff --git a/make/Makefile b/make/Makefile
index 39bdc9fa48..98f9b9d90f 100644
--- a/make/Makefile
+++ b/make/Makefile
@@ -40,7 +40,7 @@ include ./$(depth)/make/Rules.make
 
 spec: $(outdir)/lilypond.spec
 
-rpmdocs=$(addprefix Documentation/out/, $(notdir $(shell ls $(depth)/Documentation/$(outdir)/*.text)))\
+rpmdocs=$(addprefix Documentation/out/, $(notdir $(shell ls $(depth)/Documentation/$(outdir)/*.txt)))\
 	BUGS TODO NEWS DEDICATION ANNOUNCE README
 rpmmudocs=$(addprefix Documentation/, $(notdir $(shell ls $(depth)/Documentation/*.doc)))
 rpmdvis=$(rpmmudocs:.doc=.dvi)
diff --git a/make/Rules.make b/make/Rules.make
index a09bf62d74..bf8ac3e004 100644
--- a/make/Rules.make
+++ b/make/Rules.make
@@ -50,6 +50,6 @@ $(outdir)/%.cc: %.l
 	echo 0 > $@
 
 
-$(depth)/%.text: check-doc-deps
+$(depth)/%.txt: check-doc-deps
 	rm -f $@
 	ln `find ${depth}/Documentation -name $@|head -1` .
diff --git a/make/Toplevel.make.in b/make/Toplevel.make.in
index 83ed45bd66..8f72d5cb62 100644
--- a/make/Toplevel.make.in
+++ b/make/Toplevel.make.in
@@ -28,14 +28,14 @@ include ./$(depth)/make/Variables.make
 # descent order into subdirectories:
 #
 SUBDIRS = bin flower lib lily mf mi2mu debian\
-	Documentation init input tex make
+	Documentation init input tex make mutopia
 #
 
 # list of distribution files:
 #
 SCRIPTS = configure configure.in install-sh aclocal.m4
 README_FILES = BUGS DEDICATION ANNOUNCE-0.1 ANNOUNCE  COPYING ONEWS NEWS README TODO \
-	INSTALL.text AUTHORS.text
+	INSTALL.txt AUTHORS.txt
 EXTRA_DISTFILES = .dstreamrc mudela-mode.el VERSION $(README_FILES) $(SCRIPTS) $(SYMLINKS)
 
 # do not dist ./Makefile (is copied from make/Toplevel.make)
@@ -51,9 +51,9 @@ include ./$(depth)/make/Rules.make
 
 localdist: configure
 
-INSTALL.text: check-doc-deps check-mf-deps
-	rm -f INSTALL.text
-	ln `$(FIND) ./ -name INSTALL.text|head -1` .
+INSTALL.txt: check-doc-deps check-mf-deps
+	rm -f INSTALL.txt
+	ln `$(FIND) ./ -name INSTALL.txt|head -1` .
 
 
 # all machine generated junk resides in out/
diff --git a/make/lelievijver.lsm b/make/lelievijver.lsm
index ca2db8749d..ba47e4015d 100644
--- a/make/lelievijver.lsm
+++ b/make/lelievijver.lsm
@@ -1,7 +1,7 @@
 Begin3
 Titel: LilyPond
-Versie: 0.1.42
-Inschrijf datum: 27JAN98
+Versie: 0.1.43
+Inschrijf datum: 02FEB98
 Beschrijving: LilyPond is de muziek typesetter van het GNU Project.  
 		Het programma genereert muziek in zichtbare of 
 		hoorbare vorm uit uit een muzikale definitie file: 
@@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
 	jan@digicash.com (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-	395k lilypond-0.1.42.tar.gz 
+	395k lilypond-0.1.43.tar.gz 
 Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
-	395k lilypond-0.1.42.tar.gz 
+	395k lilypond-0.1.43.tar.gz 
 Copi"eer politie: GPL
 End
diff --git a/make/lilypond.lsm b/make/lilypond.lsm
index 7847e952cf..ee44737807 100644
--- a/make/lilypond.lsm
+++ b/make/lilypond.lsm
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 0.1.42
-Entered-date: 27JAN98
+Version: 0.1.43
+Entered-date: 02FEB98
 Description: LilyPond is the GNU Project music typesetter.  The program
 		generates visual or auditive output from a music 
 		definition file: it can typeset formatted sheet music 
@@ -15,8 +15,8 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys)
 	jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-	470k lilypond-0.1.42.tar.gz 
+	470k lilypond-0.1.43.tar.gz 
 Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
-	470k lilypond-0.1.42.tar.gz 
+	470k lilypond-0.1.43.tar.gz 
 Copying-policy: GPL
 End
diff --git a/make/lilypond.spec b/make/lilypond.spec
index 506988b49d..109c14796f 100644
--- a/make/lilypond.spec
+++ b/make/lilypond.spec
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 0.1.42
+Version: 0.1.43
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.42.tar.gz
+Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.43.tar.gz
 Summary: A program for typesetting music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
@@ -30,8 +30,8 @@ strip lily/out/lilypond mi2mu/out/mi2mu
 make -C Documentation gifs
 make prefix="$RPM_BUILD_ROOT/usr" install
 %files
-%doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/internals.text Documentation/out/language.text Documentation/out/lilypond.text Documentation/out/links.text Documentation/out/literature.text Documentation/out/ly2dvi.text Documentation/out/mi2mu.text Documentation/out/mudela-book.text Documentation/out/mutopia.text Documentation/out/other-packages.text BUGS TODO NEWS DEDICATION ANNOUNCE README
-%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/font-body.ly input/font.ly input/font11.ly input/font13.ly input/font16.ly input/font20.ly input/font26.ly input/gallina.ly input/gallina.tex input/gourlay.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/sleur.ly input/slurs.ly input/spacing.ly input/standchen-16.ly input/standchen-16.tex input/standchen-20.ly input/standchen-20.tex input/standchen.ly input/standje.ly input/stem.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly input/wtk1-fugue1.ly input/wtk1-fugue2.ly input/wtk1-prelude1.ly Documentation/mudela-course.doc Documentation/mudela-man.doc 
+%doc Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/convert-mudela.txt Documentation/out/faq.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/lilypond.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/ly2dvi.txt Documentation/out/mi2mu.txt Documentation/out/mudela-book.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt BUGS TODO NEWS DEDICATION ANNOUNCE README
+%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/denneboom.ly input/font-body.ly input/font.ly input/font11.ly input/font13.ly input/font16.ly input/font20.ly input/font26.ly input/gourlay.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/sleur.ly input/slurs.ly input/spacing.ly input/stem.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly Documentation/mudela-course.doc Documentation/mudela-man.doc 
 %doc Documentation/out/lelie_logo.gif
 /usr/bin/convert-mudela
 /usr/bin/mudela-book
diff --git a/mudela-mode.el b/mudela-mode.el
index 1707a46b9f..c8c2a8b58c 100644
--- a/mudela-mode.el
+++ b/mudela-mode.el
@@ -34,7 +34,7 @@
 		   "accepts" "bar" "cadenza" "clear" "clef" "cm" "consists" "contains"
 		   "duration" "absdynamic" "in" "translator" "type" "lyric" "key"
 		   "melodic" "melodic_request" "meter" "midi" "mm" "multi" "header"
-		   "notenames" "octave" "output" "partial" "paper" "plet" "property" "pt"
+		   "notenames" "octave" "output" "partial" "paper" "plet" "property" "pt" "shape"
 		   "include"
 		   "score" "script" "skip" "staff" "table" "spandynamic" "symboltables"
 		   "tempo" "texid" "textstyle" "transpose" "version" "grouping"
diff --git a/mutopia/J.S.Bach/Makefile b/mutopia/J.S.Bach/Makefile
new file mode 100644
index 0000000000..a96c8f6bb2
--- /dev/null
+++ b/mutopia/J.S.Bach/Makefile
@@ -0,0 +1,23 @@
+# mutopia/j.s.bach/Makefile
+
+
+# descent order into subdirectories:
+#
+SUBDIRS = 
+# subdir level:
+#
+depth = ../..
+#
+# generic stuff/Makefile
+#
+include ./$(depth)/make/Include.make
+#
+#
+
+# list of distribution files:
+# 
+LYFILES = $(wildcard *.ly)
+TEXFILES = $(wildcard *.tex)
+DISTFILES = Makefile $(LYFILES) $(TEXFILES) $(wildcard *.m4)
+#
+
diff --git a/mutopia/J.S.Bach/out/dummy.dep b/mutopia/J.S.Bach/out/dummy.dep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/input/scsii-menuetto.ly b/mutopia/J.S.Bach/scsii-menuetto.ly
similarity index 100%
rename from input/scsii-menuetto.ly
rename to mutopia/J.S.Bach/scsii-menuetto.ly
diff --git a/input/scsii-menuetto.tex b/mutopia/J.S.Bach/scsii-menuetto.tex
similarity index 100%
rename from input/scsii-menuetto.tex
rename to mutopia/J.S.Bach/scsii-menuetto.tex
diff --git a/input/wtk1-fugue1.ly b/mutopia/J.S.Bach/wtk1-fugue1.ly
similarity index 100%
rename from input/wtk1-fugue1.ly
rename to mutopia/J.S.Bach/wtk1-fugue1.ly
diff --git a/input/wtk1-fugue2.ly b/mutopia/J.S.Bach/wtk1-fugue2.ly
similarity index 100%
rename from input/wtk1-fugue2.ly
rename to mutopia/J.S.Bach/wtk1-fugue2.ly
diff --git a/input/wtk1-prelude1.ly b/mutopia/J.S.Bach/wtk1-prelude1.ly
similarity index 100%
rename from input/wtk1-prelude1.ly
rename to mutopia/J.S.Bach/wtk1-prelude1.ly
diff --git a/input/wtk1-prelude2.ly.m4 b/mutopia/J.S.Bach/wtk1-prelude2.ly.m4
similarity index 100%
rename from input/wtk1-prelude2.ly.m4
rename to mutopia/J.S.Bach/wtk1-prelude2.ly.m4
diff --git a/mutopia/Makefile b/mutopia/Makefile
new file mode 100644
index 0000000000..7c3cb7d7e7
--- /dev/null
+++ b/mutopia/Makefile
@@ -0,0 +1,21 @@
+# mutopia/Makefile
+
+# subdir level:
+#
+depth = ..
+#
+
+# descent order into subdirectories:
+#
+SUBDIRS = J.S.Bach
+#
+# generic stuff/Makefile
+#
+include ./$(depth)/make/Include.make
+# list of distribution files:
+# 
+LYFILES = $(wildcard *.ly)
+TEXFILES = $(wildcard *.tex)
+DISTFILES = Makefile TODO $(LYFILES) $(TEXFILES) $(wildcard *.m4)
+#
+
diff --git a/mutopia/TODO b/mutopia/TODO
new file mode 100644
index 0000000000..7239bc104c
--- /dev/null
+++ b/mutopia/TODO
@@ -0,0 +1,3 @@
+	- more composers > 70y +
+	- (more) free composers
+	- beethoven's coriolan
diff --git a/input/gallina.ly b/mutopia/gallina.ly
similarity index 100%
rename from input/gallina.ly
rename to mutopia/gallina.ly
diff --git a/input/gallina.tex b/mutopia/gallina.tex
similarity index 100%
rename from input/gallina.tex
rename to mutopia/gallina.tex
diff --git a/mutopia/out/dummy.dep b/mutopia/out/dummy.dep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/input/standchen-16.ly b/mutopia/standchen-16.ly
similarity index 100%
rename from input/standchen-16.ly
rename to mutopia/standchen-16.ly
diff --git a/input/standchen-16.tex b/mutopia/standchen-16.tex
similarity index 100%
rename from input/standchen-16.tex
rename to mutopia/standchen-16.tex
diff --git a/input/standchen-20.ly b/mutopia/standchen-20.ly
similarity index 100%
rename from input/standchen-20.ly
rename to mutopia/standchen-20.ly
diff --git a/input/standchen-20.tex b/mutopia/standchen-20.tex
similarity index 100%
rename from input/standchen-20.tex
rename to mutopia/standchen-20.tex
diff --git a/input/standchen.ly b/mutopia/standchen.ly
similarity index 100%
rename from input/standchen.ly
rename to mutopia/standchen.ly
diff --git a/input/standje.ly b/mutopia/standje.ly
similarity index 69%
rename from input/standje.ly
rename to mutopia/standje.ly
index e6d29fd994..9311a3709c 100644
--- a/input/standje.ly
+++ b/mutopia/standje.ly
@@ -19,7 +19,7 @@ $vocal_verse1 = \melodic{
 	\octave c';
 	% ugh: treble/bass
 %	\clef treble;
-	\clef violin;
+%	\clef violin;
 	[2/3 g8( )as] g \] c'4. g8 |
 	[2/3 f8( )g] f \] c'4 f8 r |
 	g4.-> f8 [2/3 f( )es] d \] |
@@ -48,9 +48,7 @@ $vocal_verse1 = \melodic{
 	[2/3 a!8( ) gis] a \] c'4. a8 |
 	g!2. |
 	[2/3 d'8\f cis'] d \] f'4. b8 |
-	c'2. |
-	r2. |
-	r2. |
+	c'!2. |
 }
 
 $lyric_verse1 = \lyric{
@@ -82,16 +80,14 @@ $lyric_verse1 = \lyric{
 	nicht,2. |
 	\[2/3 f\"urch-4 te,8 \] Hol-4. de,8 |
 	nicht.2. |
-	_4 _ _ 
-	_ _ _
 }
 	
 $treble_intro = \melodic{
 	\octave c';
 	\clef violin;
 	% ugh: i'd like to type this!
-	%r8 [<'g-. c-.> <c-. es-.> <'g-. c-.> <c-. es-.> <'g-. c-.>] |
-	r8 <['g-. c-.> <c-. es-.> <'g-. c-.> <c-. es-.> <'g-. c-.]> |
+	%r8\pp [<'g-. c-.> <c-. es-.> <'g-. c-.> <c-. es-.> <'g-. c-.>] |
+	r8\pp <['g-. c-.> <c-. es-.> <'g-. c-.> <c-. es-.> <'g-. c-.]> |
 	r8 <['as-. c-.> <c-. es-.> <'as-. c-.> <c-. es-.> <'as-. c-.]> |
 	r8 <['as-. c-.> <c-. d-.> <'as-. c-.> <c-. d-.> <'as-. c-.]> |
 	r8 <['g-. 'b-.> <'b-. d-.> <'g-. 'b-.> <'b-. d-.> <'g-. 'b-.]> |
@@ -100,13 +96,13 @@ $treble_intro = \melodic{
 
 $treble_verse1 = \melodic{
 	\octave c';
-	\clef violin;
+%	\clef violin;
 	r8 <['g c> <c es> <'g c> <c es> <'g c]> |
 	r8 <['f c> <c d> <'f c> <c d> <'f c]> |
 	r8 <['f 'g 'b> <'g 'b d> <'f 'g 'b> <'g 'b d> <'f 'g 'b]> |
 	r8 <['es 'g c> <'g c es> <'es 'g c> <'g c es> <'es 'g c]> |
 	<g'4.( b> <)f'8 d'> <[2/3 f' d'> <es' c'> <d' b]1/1> |
-	<c'2. e'> |
+	<c'2. es'> |
 	r8 <['g c> <c es> <'g c> <c es> <'g c]> |
 	r8 <['f c> <c d> <'f c> <c d> <'f c]> |
 	r8 <['f 'as 'bes> <'as 'bes d> <'f 'g 'bes> <'g 'bes d> <'f 'g 'bes]> |
@@ -125,11 +121,23 @@ $treble_verse1 = \melodic{
 	r8 <['e 'g> <'g c> <'e 'g> <'g c> <'e 'g]> |
 	r8 <['f 'a c> <'a c f> <'f 'a c> <'a c f> <'f 'a c]> |
 	r8 <['e 'g c> <'g c e> <'e 'g c> <'g c e> <'e 'g c]> |
-	<{[2/3 f'8\f( e f']1/1 a'4. )f'8 } {\[2/3 f e f \] a4. f8 } > |
+	<{[2/3 f'8\f( e' f']1/1 a'4. )f'8 } {\[2/3 f e f \] a4. f8 } > |
 	<e2 e'> r4 |
+}
+
+$treble_eentje = \melodic{
+	\octave c';
 %	<{as!2\mf( [c'8. )as16]} {f2 as8( )f}> |
-	as!2\mf( [c'8. )as16] |
-	<e4. g> <[e8-.( g-.> <e8-. g-.> <)e8-. g-.]> |
+%	as!2\mf( [c'8. )as16] |
+%	<e4. g> <[e8-.( g-.> <e8-. g-.> <)e8-. g-.]> |
+	<f2\mf as!(> <[as8.( c'> <)f )as16]> |
+	<e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
+	<f4. g> <['b8-. g-.(> <d-. g-.> <f-. )g-.]> |
+	<e2 g\pp> <e4 g> |
+	<f2\mf a(> <[as8.( c'> <)f )a16]> |
+	<e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
+	<f4. g> <['b8-. g-.(> <d-. g-.> <f-. )g-.]> |
+	<e2. g> |
 }
 
 $bass_intro = \melodic{
@@ -138,38 +146,41 @@ $bass_intro = \melodic{
 	<'c2 c> r4 |
 	<''as2 'as> r4 |
 	<''f2 'f> r4 |
-	<''g2 g> r4 |
+	<''g2 'g> r4 |
 }
 
 $bass_verse1 = \melodic{
 	\octave c;
-	\clef bass;
-	<'c2 c> r4 |
-	<'as2 as> r4 |
-	<'g2 g> r4 |
-	<'c2 c> r4 |
-	<'g8 g> <[g' d''> <d'' f''> <g' d''> <d'' f''> <g' d'']> |
-	<'c2 c> r4 |
-	<'c2 c> r4 |
-	<'c2 c> r4 |
-	<'c2 c> r4 |
-	<'c2 c> r4 |
-	<'c2 c> r4 |
-	<'c2 c> r4 |
-	<'c2 c> r4 |
-	<'c2 c> r4 |
-	<'c2 c> r4 |
-	<'c2 c> r4 |
-	<'c2 c> r4 |
-	<'c2 c> r4 |
+%	\clef bass;
 	<'c2 c> r4 |
+	<''as2 'as> r4 |
+	<''g2 'g> r4 |
 	<'c2 c> r4 |
+	<''g8 'g> <[g d'> <d' f'> <g d'> <d' f'> <g d']> |
+	<'c8 c> <[g c'> <c' es'> <g c'> <c' es'> <g c']> |
 	<'c2 c> r4 |
+	<''as2 'as> r4 |
+	<''bes2 'bes> r4 |
+	<''es2 'es> r4 |
+	''bes8 <['bes f> <f bes> <'bes f> <f bes> <'bes f]> |
+	''es8 <['bes es> <es g> <'bes es> <es g> <'bes es]> |
+	<''g2 'g> r4 |
 	<'c2 c> r4 |
+	<''as2 'as> r4 |
+	<''es2 'es> r4 |
+	<''bes8 'bes> <[f bes> <bes d'> <f bes> <bes d'> <f bes]> |
+	<''es8 'es> <[es g bes> <g bes es'> <es g bes> <g bes es'> <es g bes]> |
+	<''g2 'g> r4 |
 	<'c2 c> r4 |
+	<''f2 'f> r4 |
 	<'c2 c> r4 |
+	<''g8 'g> <[d g> <g b> <d g> <g b> <d g]> |
+	'c8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
+}
+
+$bass_eentje1 = \melodic{
+	\octave c;
 }
-		
 		
 global= \melodic {\meter 3 /4; \key bes es as; }
 
@@ -177,23 +188,36 @@ global= \melodic {\meter 3 /4; \key bes es as; }
 \score{
 	\melodic<
 		\type Lyrics { 
-			\meter 3 /4; \skip 4 * 12; \$lyric_verse1
+			\meter 3 /4; 
+			\skip 4 * 12; 
+			\$lyric_verse1
+%			\skip 4 * 24; 
 		}
 		\type Staff { < 
 			\global 
-			{ \skip 4 * 12; \$vocal_verse1 }
+			{ 
+				\skip 4 * 12; 
+				\$vocal_verse1 
+%				\skip 4 * 24; 
+			}
 		> }
 		
-		% i want a (grand) staff!!!
-		
 		\type Grandstaff < 
 			< 
 				\global
-				{ \$treble_intro \$treble_verse1 }
+				{ 
+					\$treble_intro 
+					\$treble_verse1 
+%					\$treble_eentje
+				}
 			>
 			< 
 				\global
-				{ \$bass_intro \$bass_verse1 }
+				{ 
+					\$bass_intro 
+					\$bass_verse1 
+%					\$bass_eentje
+				}
 			>
 		>
 	>
@@ -204,5 +228,8 @@ global= \melodic {\meter 3 /4; \key bes es as; }
 		% ugh: the *first* (intro) line may only have four measures...
 		gourlay_maxmeasures = 4.;
 	}
+	\midi{
+		\tempo 4 = 54;
+	}
 }
 
diff --git a/tex/lily-ps-defs.tex b/tex/lily-ps-defs.tex
index 503d559f64..f93da7cfd2 100644
--- a/tex/lily-ps-defs.tex
+++ b/tex/lily-ps-defs.tex
@@ -103,17 +103,18 @@ def
                 /dir exch def
                 /plet_dy exch def
                 /plet_dx exch def
-		staffheight 2 div /plet_gap exch def
+		staffheight 2 div /plet_gapx exch def
+		plet_dy plet_dx div plet_gapx mul /plet_gapy exch def
 		staffheight 4 div dir mul /plet_h exch def
 %
-		plet_dy plet_dx lily_distance /plet_w exch def
-		plet_dy plet_dx atan rotate
 		0 0 moveto
                 0 plet_h lineto 
-		plet_w plet_gap sub 2 div plet_h lineto
-		plet_w plet_gap add 2 div plet_h moveto
-		plet_w plet_h lineto
-		plet_w 0 lineto
+		plet_dx plet_gapx sub 2 div 
+			plet_dy plet_gapy sub 2 div plet_h add lineto
+		plet_dx plet_gapx add 2 div 
+			plet_dy plet_gapy add 2 div plet_h add moveto
+		plet_dx plet_dy plet_h add lineto
+		plet_dx plet_dy lineto
 		stroke
         }
         bind def
-- 
2.39.5