From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Tue, 17 Mar 1998 08:53:34 +0000 (+0100)
Subject: release: 0.1.52
X-Git-Tag: release/0.1.52
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=1ff8f1c7e0baac008490e9e62995df70e0ed5128;p=lilypond.git

release: 0.1.52
---

diff --git a/.dstreamrc b/.dstreamrc
index d59bde6e3e..e38a402100 100644
--- a/.dstreamrc
+++ b/.dstreamrc
@@ -13,7 +13,7 @@ InitLexer		1
 Lexer			1
 
 
-walking		0
+walking		11
 
 # flower lib
 File_path		1
@@ -37,7 +37,7 @@ Engraver_group_engraver 0
 Group_change_req	0
 Head_column		0
 Idealspacing		0
-Ineq_constrained_qp 	1
+Ineq_constrained_qp 	0
 Input_translator	0
 Item			0
 Key_item		0
diff --git a/Documentation/AUTHORS.pod b/Documentation/AUTHORS.pod
index 88ddb2410a..3e377f910e 100644
--- a/Documentation/AUTHORS.pod
+++ b/Documentation/AUTHORS.pod
@@ -10,7 +10,7 @@ This file lists authors of GNU LilyPond, and what they wrote.
 
 =over 4
 
-=item * Han-Wen Nienhuys <hanwen@cs.ruu.nl>, http://www.stack.nl/~hanwen
+=item * Han-Wen Nienhuys <hanwen@cs.ruu.nl>, http://www.cs.ruu.nl/people/hanwen
 
 Main author.
 
diff --git a/Documentation/Makefile.am b/Documentation/Makefile.am
index b19f90a2ea..66c0e42433 100644
--- a/Documentation/Makefile.am
+++ b/Documentation/Makefile.am
@@ -35,9 +35,9 @@ uninstall-hook:
 
 html: $(HTMLFILES)
 
-clean-hook:
-	rm $(TEXTFILES) $(MAN1GROFF)
+clean-local:
+	-rm $(TEXTFILES) $(MAN1GROFF)
 
 include $(top_srcdir)/Documentation/Rules.make
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/Documentation/Makefile.am.wild b/Documentation/Makefile.am.wild
index aa2476c53b..329e22535f 100644
--- a/Documentation/Makefile.am.wild
+++ b/Documentation/Makefile.am.wild
@@ -32,7 +32,7 @@ uninstall-hook:
 
 html: $(HTMLFILES)
 
-clean-hook:
-	rm $(TEXTFILES) $(MAN1GROFF)
+clean-local:
+	-rm $(TEXTFILES) $(MAN1GROFF)
 
 include $(top_srcdir)/Documentation/Rules.make
diff --git a/Documentation/Makefile.in b/Documentation/Makefile.in
index 7e3d369fd4..c2e9724f86 100644
--- a/Documentation/Makefile.in
+++ b/Documentation/Makefile.in
@@ -190,7 +190,7 @@ maintainer-clean-generic:
 	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 mostlyclean:  mostlyclean-generic
 
-clean:  clean-generic mostlyclean
+clean:  clean-generic mostlyclean clean-local
 
 distclean:  distclean-generic clean
 	-rm -f config.status
@@ -220,12 +220,12 @@ uninstall-hook:
 
 html: $(HTMLFILES)
 
-clean-hook:
-	rm $(TEXTFILES) $(MAN1GROFF)
+clean-local:
+	-rm $(TEXTFILES) $(MAN1GROFF)
 
 include $(top_srcdir)/Documentation/Rules.make
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/Documentation/lilypond.pod b/Documentation/lilypond.pod
index 0e685b58f0..8742d2ec6b 100644
--- a/Documentation/lilypond.pod
+++ b/Documentation/lilypond.pod
@@ -136,7 +136,7 @@ information, and small contributions.
 
 =item *
 
-Han-Wen Nienhuys <hanwen@cs.ruu.nl>, http://www.stack.nl/~hanwen
+Han-Wen Nienhuys <hanwen@cs.ruu.nl>, http://www.cs.ruu.nl/people/hanwen
 
 =item *
 
@@ -243,7 +243,7 @@ Goals of the GNU LilyPond project.
 
 The GNU LilyPond FAQ list
 
-=item http://www.stack.nl/~hanwen/lilypond/index.html
+=item http://www.cs.ruu.nl/people/hanwen/lilypond/index.html
 
 GNU LilyPond has her own webpage.  This webpage contains the MIDI, GIF
 and PS files for some standard music files.  It also has the complete
diff --git a/Documentation/other-packages.pod b/Documentation/other-packages.pod
index 56cd0f9c83..b8b754be83 100644
--- a/Documentation/other-packages.pod
+++ b/Documentation/other-packages.pod
@@ -25,12 +25,13 @@ Lisp. It needs the Adobe Sonata or Finale Petrucci font.
 
 A amateurish notation program for TclTk and X.
 
-=item MPP, http://www.stack.nl/~hanwen/mpp-english.html
+=item MPP
 
 A preprocessor to MusixTeX by Jan Nieuwenhuizen and Han-Wen Nienhuys.
-It is outdated by its successor, LilyPond.
+It is outdated by its successor, LilyPond.  MPP is still available via
+the CTAN archive.
 
-=item LilyPond, http://www.stack.nl/~hanwen/lilypond/index.html
+=item LilyPond, http://www.cs.ruu.nl/people/hanwen/lilypond/index.html
 
 Added for completeness. You are currently reading her documentation.
 
diff --git a/Makefile.am b/Makefile.am
index ddcfd50c6c..c25099c607 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -26,5 +26,10 @@ PATCHES:
 	rm -f PATCHES
 	ln `$(FIND) ./ -name PATCHES.txt -print | head -1` $@
 
+
+# a hack due to a bug in automake: the macro AM_CONFIG_HEADER does not
+# respect the directory
+distclean-local:
+	rm -f lib/config.hh
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/Makefile.am.wild b/Makefile.am.wild
index 885dcb8c12..5d6cdeb635 100644
--- a/Makefile.am.wild
+++ b/Makefile.am.wild
@@ -23,3 +23,8 @@ PATCHES:
 	rm -f PATCHES
 	ln `$(FIND) ./ -name PATCHES.txt -print | head -1` $@
 
+
+# a hack due to a bug in automake: the macro AM_CONFIG_HEADER does not
+# respect the directory
+distclean-local:
+	rm -f lib/config.hh
diff --git a/Makefile.in b/Makefile.in
index 4e1bdbe490..3a43b1d719 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -325,7 +325,7 @@ mostlyclean:  mostlyclean-recursive mostlyclean-am
 
 clean:  clean-recursive clean-am
 
-distclean:  distclean-recursive distclean-am
+distclean:  distclean-recursive distclean-am distclean-local
 	-rm -f config.status
 	-rm -f libtool
 
@@ -359,8 +359,12 @@ PATCHES:
 	rm -f PATCHES
 	ln `$(FIND) ./ -name PATCHES.txt -print | head -1` $@
 
+# a hack due to a bug in automake: the macro AM_CONFIG_HEADER does not
+# respect the directory
+distclean-local:
+	rm -f lib/config.hh
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/NEWS b/NEWS
index e528ecb8ee..3d0c20d712 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,13 @@
-**********
+pl 52
+	- split up elem-group stuff.
+	- per line widths
+	- miscellaneous fixes by WL.
+
+pl 51.jcn1
+	- bf's: dutch->nederlands
+	- Cygnus b19 compile/link fixes
+
+************
 march 27
 pl 51
 	- changed dutch -> nederlands, german -> deutsch etc.
@@ -16,15 +25,13 @@ pl 50.jcn4
 	- bf: DIR_DATADIR
 	- bf: trills
 
-
-		
 ************
 pl 50
 	- deprecate autowild
 	- --srcdir fixes
 	- ly2dvi 0.8
 
-pl 49jcn2
+pl 49.jcn2
 	- static (default) and/or shared libs flower and lily
 	- patch from AO 'libtool 1.1.1'
 	- mf: trill-symbols: feta-slag.mf
diff --git a/VERSION b/VERSION
index 909a5a0daf..03a63583e4 100644
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 MAJOR_VERSION=0
 MINOR_VERSION=1
-PATCH_LEVEL=51
+PATCH_LEVEL=52
 MY_PATCH_LEVEL=
 
 # now used as shell script in configure too
diff --git a/bin/Makefile.am b/bin/Makefile.am
index c7904427ee..fd301eba42 100644
--- a/bin/Makefile.am
+++ b/bin/Makefile.am
@@ -8,7 +8,9 @@
 SLANG_SCHRIFTEN = flower.py lilypython.py
 PAREL_SCHRIFTEN = 
 IN_SCHRIFTEN = flower.py lilypython.py
-EXTRA_DIST = Makefile.am.wild $(PAREL_SCHRIFTEN) $(IN_SCHRIFTEN) $(SLANG_SCHRIFTEN) wild-perl
+EXTRA_DIST = Makefile.am.wild $(PAREL_SCHRIFTEN) $(IN_SCHRIFTEN) $(SLANG_SCHRIFTEN) wild-perl autowild
 
+clean-local:
+	-rm -f flower.pyc
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/bin/Makefile.am.wild b/bin/Makefile.am.wild
index fb04a37aeb..aa13c4e515 100755
--- a/bin/Makefile.am.wild
+++ b/bin/Makefile.am.wild
@@ -5,5 +5,7 @@
 SLANG_SCHRIFTEN = $(wildcard *.py)
 PAREL_SCHRIFTEN = $(wildcard *.pl)
 IN_SCHRIFTEN = $(wildcard *.py)
-EXTRA_DIST = Makefile.am.wild $(PAREL_SCHRIFTEN) $(IN_SCHRIFTEN) $(SLANG_SCHRIFTEN) wild-perl
+EXTRA_DIST = Makefile.am.wild $(PAREL_SCHRIFTEN) $(IN_SCHRIFTEN) $(SLANG_SCHRIFTEN) wild-perl autowild
 
+clean-local:
+	-rm -f flower.pyc
diff --git a/bin/Makefile.in b/bin/Makefile.in
index 2a45668f86..f508a310f6 100644
--- a/bin/Makefile.in
+++ b/bin/Makefile.in
@@ -104,7 +104,7 @@ absolute_builddir = @absolute_builddir@
 SLANG_SCHRIFTEN = flower.py lilypython.py
 PAREL_SCHRIFTEN = 
 IN_SCHRIFTEN = flower.py lilypython.py
-EXTRA_DIST = Makefile.am.wild $(PAREL_SCHRIFTEN) $(IN_SCHRIFTEN) $(SLANG_SCHRIFTEN) wild-perl
+EXTRA_DIST = Makefile.am.wild $(PAREL_SCHRIFTEN) $(IN_SCHRIFTEN) $(SLANG_SCHRIFTEN) wild-perl autowild
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = ../lib/config.hh
 CONFIG_CLEAN_FILES =  add-URLs clean-diaper clean-embeds clean-fonts \
@@ -230,7 +230,7 @@ maintainer-clean-generic:
 	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 mostlyclean:  mostlyclean-generic
 
-clean:  clean-generic mostlyclean
+clean:  clean-generic mostlyclean clean-local
 
 distclean:  distclean-generic clean
 	-rm -f config.status
@@ -246,8 +246,10 @@ distclean-generic clean-generic maintainer-clean-generic clean \
 mostlyclean distclean maintainer-clean
 
 
+clean-local:
+	-rm -f flower.pyc
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/bin/autowild b/bin/autowild
new file mode 100755
index 0000000000..e2e5638735
--- /dev/null
+++ b/bin/autowild
@@ -0,0 +1,38 @@
+#!/bin/sh
+# autowild
+# for those of you that have no wild-automake
+
+# ugh
+verbose=true
+if test x$1 = x-v; then
+	verbose=echo
+fi
+
+#ugh
+# PERL=@PERL@
+PERL=/usr/bin/perl
+PROGNAME=autowild #don't includee path; this messes up stuff
+WILD_MAKEFILES=$(find . -name \*.wild)
+for i in $WILD_MAKEFILES; do
+	dir=$(dirname $i)
+	wild=$(basename $i)
+	make=$(basename $i .wild)
+	TOPDIR=`pwd`
+	(cd $dir
+
+	$verbose -n "trying $dir/$make.. "
+	cat $wild | $PERL $TOPDIR/bin/wild-perl >> $make.NEW
+	if [ ! -f $make ]; then
+	    touch $make
+	fi
+
+	if cmp -s $make.NEW $make; then
+	    $verbose "autowild: $dir/$make didn't change"
+	    rm $make.NEW
+	else
+		mv $make.NEW $make
+		$verbose "autowild: creating $dir/$make"
+	fi
+	)
+done
+	
diff --git a/bin/genheader.in b/bin/genheader.in
index 57f0e9fb8f..9f16663bf7 100755
--- a/bin/genheader.in
+++ b/bin/genheader.in
@@ -18,6 +18,7 @@ import string
 import sys
 import os
 import getopt
+import time
 
 class My_options:
     def __init__(self):
@@ -59,8 +60,8 @@ def head_str(filename):
 	what=" implement "
 
 
-    headstr = '\n%s -- %s\n\nsource file of %s\n\n(c) 1997 %s <%s>\n' \
-	      %(filename, what, project_str(), name(), mail())
+    headstr = '\n%s -- %s\n\nsource file of %s\n\n(c) %d %s <%s>\n' \
+	      %(filename, what, project_str(), time.localtime (time.time ())[0], name(), mail())
     return headstr
 
 
diff --git a/bin/wild-perl b/bin/wild-perl
index a26ceefcae..a61caf335b 100755
--- a/bin/wild-perl
+++ b/bin/wild-perl
@@ -1,6 +1,11 @@
 # -*- perl -*-
 ##! @PERL@
 
+use Getopt::Long;
+GetOptions("top-srcdir:s");
+
+$my_topdir = $opt_top_srcdir ? $opt_top_srcdir : "\$(top_srcdir)";
+
 @ignorestuff = ();
 
 sub ignore_query
@@ -11,6 +16,7 @@ sub ignore_query
 
 print "# Generated automatically by wild-perl 0.1\n";
 
+
 while (<>) {
 	$line = $_;
 	if ($line =~ /^ *nowildcard: *(.*)$/) {
@@ -37,5 +43,5 @@ while (<>) {
 
 
 print "\$(srcdir)/Makefile.am: \$(srcdir)/Makefile.am.wild\n" .
-    "\t\$(PERL) \$(top_srcdir)/bin/wild-perl < \$< > \$@";
+    "\t\$(PERL) $my_topdir/bin/wild-perl --top-srcdir=\"\$(real_topdir)\" < \$< > \$@";
 
diff --git a/configure b/configure
index 0a936113ae..059b3a65ad 100755
--- a/configure
+++ b/configure
@@ -804,10 +804,116 @@ fi
 
 
 
+#AC_PROG_CC
+#AC_PROG_CXX
+
+# turn off shared libraries by default (may be enabled using --enable-shared)
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  p=${PACKAGE-default}
+case "$enableval" in
+yes) enable_shared=yes ;;
+no) enable_shared=no ;;
+*)
+  enable_shared=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_shared=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_shared=no
+fi
+
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval="$enable_static"
+  p=${PACKAGE-default}
+case "$enableval" in
+yes) enable_static=yes ;;
+no) enable_static=no ;;
+*)
+  enable_static=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_static=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_static=yes
+fi
+
+
+# Make sure we can run config.sub.
+if $ac_config_sub sun4 >/dev/null 2>&1; then :
+else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking host system type""... $ac_c" 1>&6
+echo "configure:865: checking host system type" >&5
+
+host_alias=$host
+case "$host_alias" in
+NONE)
+  case $nonopt in
+  NONE)
+    if host_alias=`$ac_config_guess`; then :
+    else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+    fi ;;
+  *) host_alias=$nonopt ;;
+  esac ;;
+esac
+
+host=`$ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$host" 1>&6
+
+# Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:888: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_RANLIB="ranlib"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
+fi
+fi
+RANLIB="$ac_cv_prog_RANLIB"
+if test -n "$RANLIB"; then
+  echo "$ac_t""$RANLIB" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:811: checking for $ac_word" >&5
+echo "configure:917: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -836,7 +942,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:840: checking for $ac_word" >&5
+echo "configure:946: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -884,7 +990,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:888: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:994: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -894,11 +1000,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
 cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext <<EOF
-#line 898 "configure"
+#line 1004 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1008: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -918,12 +1024,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:922: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1028: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:927: checking whether we are using GNU C" >&5
+echo "configure:1033: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -932,7 +1038,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:936: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1042: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -947,7 +1053,7 @@ if test $ac_cv_prog_gcc = yes; then
   ac_save_CFLAGS="$CFLAGS"
   CFLAGS=
   echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:951: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1057: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -974,242 +1080,6 @@ else
   test "${CFLAGS+set}" = set || CFLAGS="-g"
 fi
 
-for ac_prog in $CCC c++ g++ gcc CC cxx cc++
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:983: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CXX="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CXX="$ac_cv_prog_CXX"
-if test -n "$CXX"; then
-  echo "$ac_t""$CXX" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$CXX" && break
-done
-test -n "$CXX" || CXX="gcc"
-
-
-echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1014: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
-
-ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
-
-cat > conftest.$ac_ext <<EOF
-#line 1024 "configure"
-#include "confdefs.h"
-main(){return(0);}
-EOF
-if { (eval echo configure:1028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  ac_cv_prog_cxx_works=yes
-  # If we can't run a trivial program, we are probably using a cross compiler.
-  if (./conftest; exit) 2>/dev/null; then
-    ac_cv_prog_cxx_cross=no
-  else
-    ac_cv_prog_cxx_cross=yes
-  fi
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  ac_cv_prog_cxx_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
-if test $ac_cv_prog_cxx_works = no; then
-  { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1054: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
-cross_compiling=$ac_cv_prog_cxx_cross
-
-echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1059: checking whether we are using GNU C++" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.C <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1068: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-  ac_cv_prog_gxx=yes
-else
-  ac_cv_prog_gxx=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gxx" 1>&6
-
-if test $ac_cv_prog_gxx = yes; then
-  GXX=yes
-  ac_test_CXXFLAGS="${CXXFLAGS+set}"
-  ac_save_CXXFLAGS="$CXXFLAGS"
-  CXXFLAGS=
-  echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1083: checking whether ${CXX-g++} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  echo 'void f(){}' > conftest.cc
-if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then
-  ac_cv_prog_cxx_g=yes
-else
-  ac_cv_prog_cxx_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6
-  if test "$ac_test_CXXFLAGS" = set; then
-    CXXFLAGS="$ac_save_CXXFLAGS"
-  elif test $ac_cv_prog_cxx_g = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-O2"
-  fi
-else
-  GXX=
-  test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
-fi
-
-
-# turn off shared libraries by default (may be enabled using --enable-shared)
-# Check whether --enable-shared or --disable-shared was given.
-if test "${enable_shared+set}" = set; then
-  enableval="$enable_shared"
-  p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_shared=yes ;;
-no) enable_shared=no ;;
-*)
-  enable_shared=no
-  # Look at the argument we got.  We use all the common list separators.
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-  for pkg in $enableval; do
-    if test "X$pkg" = "X$p"; then
-      enable_shared=yes
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-else
-  enable_shared=no
-fi
-
-# Check whether --enable-static or --disable-static was given.
-if test "${enable_static+set}" = set; then
-  enableval="$enable_static"
-  p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_static=yes ;;
-no) enable_static=no ;;
-*)
-  enable_static=no
-  # Look at the argument we got.  We use all the common list separators.
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-  for pkg in $enableval; do
-    if test "X$pkg" = "X$p"; then
-      enable_static=yes
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-else
-  enable_static=yes
-fi
-
-
-# Make sure we can run config.sub.
-if $ac_config_sub sun4 >/dev/null 2>&1; then :
-else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1165: checking host system type" >&5
-
-host_alias=$host
-case "$host_alias" in
-NONE)
-  case $nonopt in
-  NONE)
-    if host_alias=`$ac_config_guess`; then :
-    else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
-    fi ;;
-  *) host_alias=$nonopt ;;
-  esac ;;
-esac
-
-host=`$ac_config_sub $host_alias`
-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$host" 1>&6
-
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1188: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_RANLIB="ranlib"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
-  echo "$ac_t""$RANLIB" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
 # Check whether --with-gnu-ld or --without-gnu-ld was given.
 if test "${with_gnu_ld+set}" = set; then
   withval="$with_gnu_ld"
@@ -1223,7 +1093,7 @@ ac_prog=ld
 if test "$ac_cv_prog_gcc" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
   echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:1227: checking for ld used by GCC" >&5
+echo "configure:1097: checking for ld used by GCC" >&5
   ac_prog=`($CC -print-prog-name=ld) 2>&5`
   case "$ac_prog" in
   # Accept absolute paths.
@@ -1241,10 +1111,10 @@ echo "configure:1227: checking for ld used by GCC" >&5
   esac
 elif test "$with_gnu_ld" = yes; then
   echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1245: checking for GNU ld" >&5
+echo "configure:1115: checking for GNU ld" >&5
 else
   echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1248: checking for non-GNU ld" >&5
+echo "configure:1118: checking for non-GNU ld" >&5
 fi
 if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1280,7 +1150,7 @@ fi
 test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
 
 echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
-echo "configure:1284: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1154: checking if the linker ($LD) is GNU ld" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1296,7 +1166,7 @@ echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
 
 
 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
-echo "configure:1300: checking for BSD-compatible nm" >&5
+echo "configure:1170: checking for BSD-compatible nm" >&5
 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1333,7 +1203,7 @@ echo "$ac_t""$NM" 1>&6
 
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1337: checking whether ln -s works" >&5
+echo "configure:1207: checking whether ln -s works" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1369,8 +1239,8 @@ test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
 case "$host" in
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 1373 "configure"' > conftest.$ac_ext
-  if { (eval echo configure:1374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  echo '#line 1243 "configure"' > conftest.$ac_ext
+  if { (eval echo configure:1244: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
     case "`/usr/bin/file conftest.o`" in
     *32-bit*)
       LD="${LD-ld} -32"
@@ -1406,7 +1276,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1410: checking for $ac_word" >&5
+echo "configure:1280: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1440,7 +1310,7 @@ test -n "$YACC" || YACC="yacc"
 # Extract the first word of "flex", so it can be a program name with args.
 set dummy flex; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1444: checking for $ac_word" >&5
+echo "configure:1314: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1473,7 +1343,7 @@ then
   *) ac_lib=l ;;
   esac
   echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6
-echo "configure:1477: checking for yywrap in -l$ac_lib" >&5
+echo "configure:1347: checking for yywrap in -l$ac_lib" >&5
 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1481,7 +1351,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l$ac_lib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1485 "configure"
+#line 1355 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -1492,7 +1362,7 @@ int main() {
 yywrap()
 ; return 0; }
 EOF
-if { (eval echo configure:1496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -1516,7 +1386,7 @@ fi
 
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1520: checking how to run the C preprocessor" >&5
+echo "configure:1390: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1531,13 +1401,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1535 "configure"
+#line 1405 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1541: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -1548,13 +1418,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1552 "configure"
+#line 1422 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1558: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1428: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -1577,7 +1447,7 @@ fi
 echo "$ac_t""$CPP" 1>&6
 
 echo $ac_n "checking lex output file root""... $ac_c" 1>&6
-echo "configure:1581: checking lex output file root" >&5
+echo "configure:1451: checking lex output file root" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1598,7 +1468,7 @@ echo "$ac_t""$ac_cv_prog_lex_root" 1>&6
 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
 
 echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6
-echo "configure:1602: checking whether yytext is a pointer" >&5
+echo "configure:1472: checking whether yytext is a pointer" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1610,14 +1480,14 @@ echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c
 ac_save_LIBS="$LIBS"
 LIBS="$LIBS $LEXLIB"
 cat > conftest.$ac_ext <<EOF
-#line 1614 "configure"
+#line 1484 "configure"
 #include "confdefs.h"
 `cat $LEX_OUTPUT_ROOT.c`
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:1621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_cv_prog_lex_yytext_pointer=yes
 else
@@ -1782,7 +1652,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1786: checking for $ac_word" >&5
+echo "configure:1656: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1813,7 +1683,7 @@ test -n "$CXX" || CXX="gcc"
 
 
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1817: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1687: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
 
 ac_ext=C
 # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1823,11 +1693,11 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L
 cross_compiling=$ac_cv_prog_cxx_cross
 
 cat > conftest.$ac_ext <<EOF
-#line 1827 "configure"
+#line 1697 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:1831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   ac_cv_prog_cxx_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1847,12 +1717,12 @@ if test $ac_cv_prog_cxx_works = no; then
   { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1851: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1721: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
 cross_compiling=$ac_cv_prog_cxx_cross
 
 echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1856: checking whether we are using GNU C++" >&5
+echo "configure:1726: checking whether we are using GNU C++" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1861,7 +1731,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1865: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1735: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gxx=yes
 else
   ac_cv_prog_gxx=no
@@ -1876,7 +1746,7 @@ if test $ac_cv_prog_gxx = yes; then
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS=
   echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1880: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1750: checking whether ${CXX-g++} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1915,7 +1785,7 @@ fi
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1919: checking for a BSD compatible install" >&5
+echo "configure:1789: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1969,7 +1839,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1973: checking for $ac_word" >&5
+echo "configure:1843: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2003,7 +1873,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2007: checking for $ac_word" >&5
+echo "configure:1877: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2090,7 +1960,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2094: checking for $ac_word" >&5
+echo "configure:1964: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2124,7 +1994,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2128: checking for $ac_word" >&5
+echo "configure:1998: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2158,7 +2028,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2162: checking for $ac_word" >&5
+echo "configure:2032: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2190,7 +2060,7 @@ test -n "$MAKE" || MAKE="error"
 # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2194: checking for $ac_word" >&5
+echo "configure:2064: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2222,7 +2092,7 @@ fi
 # Extract the first word of "python", so it can be a program name with args.
 set dummy python; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2226: checking for $ac_word" >&5
+echo "configure:2096: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2256,7 +2126,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2260: checking for $ac_word" >&5
+echo "configure:2130: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_POD2HTML'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2290,7 +2160,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2294: checking for $ac_word" >&5
+echo "configure:2164: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_POD2MAN'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2326,7 +2196,7 @@ if test "x$TEXPREFIX" = xauto ; then
     
 
     echo $ac_n "checking TeX/MF root dir directory""... $ac_c" 1>&6
-echo "configure:2330: checking TeX/MF root dir directory" >&5    
+echo "configure:2200: checking TeX/MF root dir directory" >&5    
 
     find_root_prefix="$prefix"
     
@@ -2362,16 +2232,37 @@ else
  find_texprefix=$TEXPREFIX
 fi
 
-# if test "x$MFDIR" = xauto; then
-#     AC_MF_SUBDIR(MFDIR)
-# fi
+if test "x$MFDIR" = xauto; then
+    
+    
+    
+    echo $ac_n "checking MF input directory""... $ac_c" 1>&6
+echo "configure:2241: checking MF input directory" >&5    
+    find_dirdir=`(cd $find_texprefix; 
+      $FIND ./ -type d -a -name source -print |sort|head -1|sed 's#^\./##')`
+    
+
+    if test "x$find_dirdir" = x; then
+       find_dirdir="/source";
+       
+    echo "configure: warning: Cannot determine MF input subdirectory. Please set from command-line" 1>&2
+    warn_b=yes
+
+	true
+    fi
+    MFDIR=$find_dirdir
+    echo "$ac_t""$find_texprefix/$find_dirdir" 1>&6
+
+    MFDIR="$TEXPREFIX/$MFDIR"
+
+fi
     
 if test "x$TEXDIR" = xauto ; then
     
     
     
     echo $ac_n "checking TeX input directory""... $ac_c" 1>&6
-echo "configure:2375: checking TeX input directory" >&5    
+echo "configure:2266: checking TeX input directory" >&5    
     find_dirdir=`(cd $find_texprefix; 
       $FIND ./ -type d -a -name tex -print |sort|head -1|sed 's#^\./##')`
     
@@ -2487,7 +2378,7 @@ else
 fi
 
 echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:2491: checking how to run the C++ preprocessor" >&5
+echo "configure:2382: checking how to run the C++ preprocessor" >&5
 if test -z "$CXXCPP"; then
 if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2500,12 +2391,12 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L
 cross_compiling=$ac_cv_prog_cxx_cross
   CXXCPP="${CXX-g++} -E"
   cat > conftest.$ac_ext <<EOF
-#line 2504 "configure"
+#line 2395 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2509: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -2525,17 +2416,17 @@ echo "$ac_t""$CXXCPP" 1>&6
 
 ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
-echo "configure:2529: checking for FlexLexer.h" >&5
+echo "configure:2420: checking for FlexLexer.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2534 "configure"
+#line 2425 "configure"
 #include "confdefs.h"
 #include <FlexLexer.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2539: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2430: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2722,14 +2613,13 @@ s%@AUTOMAKE@%$AUTOMAKE%g
 s%@AUTOHEADER@%$AUTOHEADER%g
 s%@MAKEINFO@%$MAKEINFO%g
 s%@SET_MAKE@%$SET_MAKE%g
-s%@CC@%$CC%g
-s%@CXX@%$CXX%g
 s%@host@%$host%g
 s%@host_alias@%$host_alias%g
 s%@host_cpu@%$host_cpu%g
 s%@host_vendor@%$host_vendor%g
 s%@host_os@%$host_os%g
 s%@RANLIB@%$RANLIB%g
+s%@CC@%$CC%g
 s%@LD@%$LD%g
 s%@NM@%$NM%g
 s%@LN_S@%$LN_S%g
@@ -2739,6 +2629,7 @@ s%@LEX@%$LEX%g
 s%@LEXLIB@%$LEXLIB%g
 s%@CPP@%$CPP%g
 s%@LEX_OUTPUT_ROOT@%$LEX_OUTPUT_ROOT%g
+s%@CXX@%$CXX%g
 s%@TAR@%$TAR%g
 s%@FIND@%$FIND%g
 s%@ICFLAGS@%$ICFLAGS%g
diff --git a/configure.in b/configure.in
index 56567a0a0d..31f666073c 100644
--- a/configure.in
+++ b/configure.in
@@ -11,8 +11,8 @@ if test x$MY_PATCH_LEVEL != x; then
 fi
 AM_INIT_AUTOMAKE(lilypond, $FULL_VERSION)
 
-AC_PROG_CC
-AC_PROG_CXX
+#AC_PROG_CC
+#AC_PROG_CXX
 
 # turn off shared libraries by default (may be enabled using --enable-shared)
 AM_DISABLE_SHARED
@@ -179,9 +179,9 @@ else
  find_texprefix=$TEXPREFIX
 fi
 
-# if test "x$MFDIR" = xauto; then
-#     AC_MF_SUBDIR(MFDIR)
-# fi
+if test "x$MFDIR" = xauto; then
+    AC_MF_SUBDIR(MFDIR)
+fi
     
 if test "x$TEXDIR" = xauto ; then
     AC_TEX_SUBDIR(TEXDIR)
diff --git a/debian/Makefile.am b/debian/Makefile.am
index 0268436a1c..12b5972e21 100644
--- a/debian/Makefile.am
+++ b/debian/Makefile.am
@@ -7,4 +7,4 @@ EXTRA_DIST = Makefile.am.wild README.Debian TODO changelog control copyright \
 	postinst postinst.old.sh postrm preinst rules watch
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/debian/Makefile.in b/debian/Makefile.in
index b466cc2be9..8eefa73d57 100644
--- a/debian/Makefile.in
+++ b/debian/Makefile.in
@@ -191,7 +191,7 @@ mostlyclean distclean maintainer-clean
 
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/flower/Makefile.am b/flower/Makefile.am
index d62df54f9d..5eeaa35c32 100644
--- a/flower/Makefile.am
+++ b/flower/Makefile.am
@@ -12,6 +12,9 @@
 
 SUBDIRS = include test 
 
+# the wild-perl script needs this.
+real_topdir = $(top_srcdir)/..
+
 lib_LTLIBRARIES = libflower.la
 
 README_FILES = ONEWS NEWS README TODO VERSION
@@ -23,5 +26,7 @@ libflower_la_LDFLAGS = -version-info @CURRENT@:@REVISION@:@AGE@
 
 INCLUDES = -I$(srcdir)/include
 
+distclean-local:
+	-rm -rf .deps
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/flower/Makefile.am.wild b/flower/Makefile.am.wild
index 87639fc1d0..6ef3498d04 100644
--- a/flower/Makefile.am.wild
+++ b/flower/Makefile.am.wild
@@ -9,6 +9,9 @@
 
 SUBDIRS = include test 
 
+# the wild-perl script needs this.
+real_topdir = $(top_srcdir)/..
+
 lib_LTLIBRARIES = libflower.la
 
 README_FILES = ONEWS NEWS README TODO VERSION
@@ -20,3 +23,5 @@ libflower_la_LDFLAGS = -version-info @CURRENT@:@REVISION@:@AGE@
 
 INCLUDES = -I$(srcdir)/include
 
+distclean-local:
+	-rm -rf .deps
diff --git a/flower/Makefile.in b/flower/Makefile.in
index 27bd4a909b..0a620aad4d 100644
--- a/flower/Makefile.in
+++ b/flower/Makefile.in
@@ -89,6 +89,9 @@ VERSION = @VERSION@
 
 SUBDIRS = include test 
 
+# the wild-perl script needs this.
+real_topdir = $(top_srcdir)/..
+
 lib_LTLIBRARIES = libflower.la
 
 README_FILES = ONEWS NEWS README TODO VERSION
@@ -532,7 +535,7 @@ mostlyclean:  mostlyclean-recursive mostlyclean-am
 
 clean:  clean-recursive clean-am
 
-distclean:  distclean-recursive distclean-am
+distclean:  distclean-recursive distclean-am distclean-local
 	-rm -f config.status
 	-rm -f libtool
 
@@ -560,8 +563,10 @@ mostlyclean-generic distclean-generic clean-generic \
 maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
 
+distclean-local:
+	-rm -rf .deps
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/flower/NEWS b/flower/NEWS
index 13485d6a14..351d36c051 100644
--- a/flower/NEWS
+++ b/flower/NEWS
@@ -1,6 +1,7 @@
 
 pl 39
 	- fixes to Array
+	- fixes to Interval
 
 
 pl 38
diff --git a/flower/VERSION b/flower/VERSION
index d2435e2970..ff98ffea7a 100644
--- a/flower/VERSION
+++ b/flower/VERSION
@@ -1,6 +1,7 @@
 MAJOR_VERSION=1
 MINOR_VERSION=1
-PATCH_LEVEL=38
+PATCH_LEVEL=39
 # use to send patches, always empty for released version:
-MY_PATCH_LEVEL=# include separator: "-1" or ".a"
+# include separator: "-1" or ".a"
 #
+MY_PATCH_LEVEL=
diff --git a/flower/configure b/flower/configure
index e9c9cd70dd..c0082c98fc 100755
--- a/flower/configure
+++ b/flower/configure
@@ -1488,8 +1488,41 @@ AGE=$MAJOR_VERSION
 
 
 
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1495: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  case "$PERL" in
+  /*)
+  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_path_PERL="$ac_dir/$ac_word"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="error"
+  ;;
+esac
+fi
+PERL="$ac_cv_path_PERL"
+if test -n "$PERL"; then
+  echo "$ac_t""$PERL" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
 echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:1493: checking for 8-bit clean memcmp" >&5
+echo "configure:1526: checking for 8-bit clean memcmp" >&5
 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1497,7 +1530,7 @@ else
   ac_cv_func_memcmp_clean=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 1501 "configure"
+#line 1534 "configure"
 #include "confdefs.h"
 #ifdef __cplusplus
 extern "C" void exit(int);
@@ -1510,7 +1543,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:1514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_memcmp_clean=yes
 else
@@ -1528,12 +1561,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o"
 
 echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:1532: checking for vprintf" >&5
+echo "configure:1565: checking for vprintf" >&5
 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1537 "configure"
+#line 1570 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -1559,7 +1592,7 @@ vprintf();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_vprintf=yes"
 else
@@ -1583,12 +1616,12 @@ fi
 
 if test "$ac_cv_func_vprintf" != yes; then
 echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:1587: checking for _doprnt" >&5
+echo "configure:1620: checking for _doprnt" >&5
 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1592 "configure"
+#line 1625 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -1614,7 +1647,7 @@ _doprnt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func__doprnt=yes"
 else
@@ -1641,12 +1674,12 @@ fi
 for ac_func in memmem snprintf 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1645: checking for $ac_func" >&5
+echo "configure:1678: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1650 "configure"
+#line 1683 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -1672,7 +1705,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
diff --git a/flower/configure.in b/flower/configure.in
index 25bb9392bc..aa9aa5f516 100644
--- a/flower/configure.in
+++ b/flower/configure.in
@@ -88,6 +88,8 @@ AC_SUBST(REVISION)
 AC_SUBST(AGE)
 AC_SUBST(PERL)
 
+AC_PATH_PROG(PERL, perl, error)
+
 AC_FUNC_MEMCMP
 AC_FUNC_VPRINTF
 AC_CHECK_FUNCS(memmem snprintf )
diff --git a/flower/include/Makefile.am b/flower/include/Makefile.am
index fbbb194712..5321765096 100644
--- a/flower/include/Makefile.am
+++ b/flower/include/Makefile.am
@@ -3,9 +3,12 @@
 # Generated automatically by wild-perl 0.1
 # flower/lib/include/Makefile.am.wild
 
+# the wild-perl script needs this.
+real_topdir = $(top_srcdir)/..
+
 noinst_HEADERS = acursor.hh arithmetic-operator.hh assoc-iter.hh assoc.hh choleski.hh compare.hh cpu-timer.hh cursor.hh data-file.hh diagonal-storage.hh dictionary-iter.hh dictionary.hh directed-graph.hh dstream.hh flower-debug.hh fproto.hh full-storage.hh handle.hh international.hh interval.hh iterate.hh lgetopt.hh libc-extension.hh link.hh list.hh matrix-storage.hh matrix.hh nscalar.hh parray.hh path.hh pcursor.hh plist.hh pointer.hh pqueue.hh priorities.hh rational.hh real.hh scalar.hh string-convert.hh string-data.hh string-handle.hh string.hh text-db.hh text-stream.hh timer.hh unionfind.hh varray.hh vector.hh virtual-methods.hh cursor.icc full-storage.icc link.icc list.icc plist.icc string-data.icc string-handle.icc string.icc cursor.tcc interval.tcc list.tcc pcursor.tcc plist.tcc pointer.tcc
 
 EXTRA_DIST = Makefile.am.wild
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/flower/include/Makefile.am.wild b/flower/include/Makefile.am.wild
index ac36bc76ef..5eb2230874 100644
--- a/flower/include/Makefile.am.wild
+++ b/flower/include/Makefile.am.wild
@@ -1,5 +1,8 @@
 # flower/lib/include/Makefile.am.wild
 
+# the wild-perl script needs this.
+real_topdir = $(top_srcdir)/..
+
 noinst_HEADERS = $(wildcard *.hh *.icc *.tcc)
 
 EXTRA_DIST = Makefile.am.wild
diff --git a/flower/include/Makefile.in b/flower/include/Makefile.in
index 2dfc1914be..7de221c8e1 100644
--- a/flower/include/Makefile.in
+++ b/flower/include/Makefile.in
@@ -15,6 +15,8 @@
 # Generated automatically by wild-perl 0.1
 # flower/lib/include/Makefile.am.wild
 
+# the wild-perl script needs this.
+
 
 SHELL = /bin/sh
 
@@ -80,6 +82,8 @@ RANLIB = @RANLIB@
 REVISION = @REVISION@
 VERSION = @VERSION@
 
+real_topdir = $(top_srcdir)/..
+
 noinst_HEADERS = acursor.hh arithmetic-operator.hh assoc-iter.hh assoc.hh choleski.hh compare.hh cpu-timer.hh cursor.hh data-file.hh diagonal-storage.hh dictionary-iter.hh dictionary.hh directed-graph.hh dstream.hh flower-debug.hh fproto.hh full-storage.hh handle.hh international.hh interval.hh iterate.hh lgetopt.hh libc-extension.hh link.hh list.hh matrix-storage.hh matrix.hh nscalar.hh parray.hh path.hh pcursor.hh plist.hh pointer.hh pqueue.hh priorities.hh rational.hh real.hh scalar.hh string-convert.hh string-data.hh string-handle.hh string.hh text-db.hh text-stream.hh timer.hh unionfind.hh varray.hh vector.hh virtual-methods.hh cursor.icc full-storage.icc link.icc list.icc plist.icc string-data.icc string-handle.icc string.icc cursor.tcc interval.tcc list.tcc pcursor.tcc plist.tcc pointer.tcc
 
 EXTRA_DIST = Makefile.am.wild
@@ -200,7 +204,7 @@ mostlyclean distclean maintainer-clean
 
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/flower/include/interval.hh b/flower/include/interval.hh
index b0207e0556..7a868a31ab 100644
--- a/flower/include/interval.hh
+++ b/flower/include/interval.hh
@@ -86,6 +86,12 @@ struct Interval_t {
   String str() const;    
   void print () const;
   bool elt_b (T r);
+  void negate () {
+    T r = -left;
+    T l = -right;
+    left = l;
+    right =r;
+  }
 };
 
 
@@ -121,6 +127,23 @@ Interval_t<T> operator +(T a,Interval_t<T> i)
   return i;
 }
 
+template<class T>
+inline
+Interval_t<T> operator - (Interval_t<T> i, T a)
+{
+  i += -a;
+  return i;
+}
+
+template<class T>
+inline
+Interval_t<T> operator - (T a,Interval_t<T> i)
+{
+  i.negate ();
+  i += a;
+  return i;
+}
+
 template<class T>
 inline
 Interval_t<T> operator +(Interval_t<T> i,T a){
diff --git a/flower/test/Makefile.am b/flower/test/Makefile.am
index 1aa34af387..c952130426 100644
--- a/flower/test/Makefile.am
+++ b/flower/test/Makefile.am
@@ -11,6 +11,9 @@
 #	Han-Wen Nienhuys <hanwen@stack.nl>
 #
 
+# the wild-perl script needs this.
+real_topdir = $(top_srcdir)/..
+
 # bin_PROGRAMS = test
 
 # TEST = test
@@ -27,4 +30,4 @@ noinst_HEADERS = flower-test.hh
 INCLUDES = -I../include
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/flower/test/Makefile.am.wild b/flower/test/Makefile.am.wild
index 2346878f80..02f871025b 100644
--- a/flower/test/Makefile.am.wild
+++ b/flower/test/Makefile.am.wild
@@ -8,6 +8,9 @@
 #	Han-Wen Nienhuys <hanwen@stack.nl>
 #
 
+# the wild-perl script needs this.
+real_topdir = $(top_srcdir)/..
+
 # bin_PROGRAMS = test
 
 # TEST = test
diff --git a/flower/test/Makefile.in b/flower/test/Makefile.in
index 9aa4333249..ef867cd485 100644
--- a/flower/test/Makefile.in
+++ b/flower/test/Makefile.in
@@ -23,12 +23,7 @@
 #	Han-Wen Nienhuys <hanwen@stack.nl>
 #
 
-# bin_PROGRAMS = test
-
-# TEST = test
-
-# can't link to libflower: has not been created yet...
-# test_SOURCES = main.cc mat-test.cc pqtest.cc rattest.cc stringtest.cc
+# the wild-perl script needs this.
 
 
 SHELL = /bin/sh
@@ -95,6 +90,15 @@ RANLIB = @RANLIB@
 REVISION = @REVISION@
 VERSION = @VERSION@
 
+real_topdir = $(top_srcdir)/..
+
+# bin_PROGRAMS = test
+
+# TEST = test
+
+# can't link to libflower: has not been created yet...
+# test_SOURCES = main.cc mat-test.cc pqtest.cc rattest.cc stringtest.cc
+
 EXTRA_SOURCES = main.cc mat-test.cc pqtest.cc rattest.cc stringtest.cc
 
 EXTRA_DIST = result Makefile.am.wild $(EXTRA_SOURCES)
@@ -219,7 +223,7 @@ mostlyclean distclean maintainer-clean
 
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/init/Makefile.am b/init/Makefile.am
index 31291ae66c..21e4f1a987 100644
--- a/init/Makefile.am
+++ b/init/Makefile.am
@@ -3,23 +3,23 @@
 # Generated automatically by wild-perl 0.1
 # init/Makefile.am.wild
 
-INIFILES = deutsch.ly dynamic.ly engraver.ly italiano.ly lily-init.ly midi.ly nederlands.ly norsk.ly paper11.ly paper13.ly paper16.ly paper20.ly paper26.ly performer.ly property.ly script.ly simple-init.ly svenska.ly table11.ly table13.ly table16.ly table20.ly table26.ly
+INIFILES = deutsch.ly dynamic.ly engraver.ly feta11.ly feta13.ly feta16.ly feta19.ly feta20.ly feta23.ly feta26.ly italiano.ly lily-init.ly midi.ly nederlands.ly norsk.ly paper11.ly paper13.ly paper16.ly paper20.ly paper26.ly performer.ly property.ly script.ly simple-init.ly svenska.ly table11.ly table13.ly table16.ly table20.ly table26.ly
 EXTRA_DIST = Makefile.am.wild $(INIFILES)
 
-CLEANFILES = 
+CLEANFILES = feta11.ly feta13.ly feta16.ly feta19.ly feta20.ly feta23.ly feta26.ly
 
 FONT_FILES = ../mf/feta-beams16.mf ../mf/feta-beams20.mf ../mf/feta-beams26.mf ../mf/feta-black16.mf ../mf/feta-braces16.mf ../mf/feta-braces20.mf ../mf/feta-din10.mf ../mf/feta-nummer10.mf ../mf/feta-nummer12.mf ../mf/feta-nummer3.mf ../mf/feta-nummer4.mf ../mf/feta-nummer5.mf ../mf/feta-nummer6.mf ../mf/feta-nummer7.mf ../mf/feta-nummer8.mf ../mf/feta-test16.mf ../mf/feta-test20.mf ../mf/feta11.mf ../mf/feta13.mf ../mf/feta16.mf ../mf/feta19.mf ../mf/feta20.mf ../mf/feta23.mf ../mf/feta26.mf
 TABLES = $(patsubst ../mf/%.mf,%.ly,$(FONT_FILES))
 
-# localclean:
+# clean-local:
 # 	rm -f $(TABLES)
 
-install-data:
+install-data-local:
 	$(INSTALL) -d $(datadir)/lilypond/init
 	$(INSTALL) -m 644 $(INIFILES) $(datadir)/lilypond/init
 
-uninstall-data:
+uninstall-local:
 	for i in $(INIFILES) ; do rm -f $(datadir)/lilypond/init/$$i; done
 	-rmdir $(datadir)/lilypond/init $(datadir)/lilypond/
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/init/Makefile.am.wild b/init/Makefile.am.wild
index 8589be49c8..24936bd1b2 100644
--- a/init/Makefile.am.wild
+++ b/init/Makefile.am.wild
@@ -8,13 +8,13 @@ CLEANFILES = $(wildcard feta*.ly)
 FONT_FILES = $(wildcard ../mf/*[0-9].mf)
 TABLES = $(patsubst ../mf/%.mf,%.ly,$(FONT_FILES))
 
-# localclean:
+# clean-local:
 # 	rm -f $(TABLES)
 
-install-data:
+install-data-local:
 	$(INSTALL) -d $(datadir)/lilypond/init
 	$(INSTALL) -m 644 $(INIFILES) $(datadir)/lilypond/init
 
-uninstall-data:
+uninstall-local:
 	for i in $(INIFILES) ; do rm -f $(datadir)/lilypond/init/$$i; done
 	-rmdir $(datadir)/lilypond/init $(datadir)/lilypond/
diff --git a/init/Makefile.in b/init/Makefile.in
index b8347b24bc..29093833f3 100644
--- a/init/Makefile.in
+++ b/init/Makefile.in
@@ -99,10 +99,10 @@ YACC = @YACC@
 ZIP = @ZIP@
 absolute_builddir = @absolute_builddir@
 
-INIFILES = deutsch.ly dynamic.ly engraver.ly italiano.ly lily-init.ly midi.ly nederlands.ly norsk.ly paper11.ly paper13.ly paper16.ly paper20.ly paper26.ly performer.ly property.ly script.ly simple-init.ly svenska.ly table11.ly table13.ly table16.ly table20.ly table26.ly
+INIFILES = deutsch.ly dynamic.ly engraver.ly feta11.ly feta13.ly feta16.ly feta19.ly feta20.ly feta23.ly feta26.ly italiano.ly lily-init.ly midi.ly nederlands.ly norsk.ly paper11.ly paper13.ly paper16.ly paper20.ly paper26.ly performer.ly property.ly script.ly simple-init.ly svenska.ly table11.ly table13.ly table16.ly table20.ly table26.ly
 EXTRA_DIST = Makefile.am.wild $(INIFILES)
 
-CLEANFILES = 
+CLEANFILES = feta11.ly feta13.ly feta16.ly feta19.ly feta20.ly feta23.ly feta26.ly
 
 FONT_FILES = ../mf/feta-beams16.mf ../mf/feta-beams20.mf ../mf/feta-beams26.mf ../mf/feta-black16.mf ../mf/feta-braces16.mf ../mf/feta-braces20.mf ../mf/feta-din10.mf ../mf/feta-nummer10.mf ../mf/feta-nummer12.mf ../mf/feta-nummer3.mf ../mf/feta-nummer4.mf ../mf/feta-nummer5.mf ../mf/feta-nummer6.mf ../mf/feta-nummer7.mf ../mf/feta-nummer8.mf ../mf/feta-test16.mf ../mf/feta-test20.mf ../mf/feta11.mf ../mf/feta13.mf ../mf/feta16.mf ../mf/feta19.mf ../mf/feta20.mf ../mf/feta23.mf ../mf/feta26.mf
 TABLES = $(patsubst ../mf/%.mf,%.ly,$(FONT_FILES))
@@ -148,13 +148,13 @@ installcheck:
 install-exec: 
 	@$(NORMAL_INSTALL)
 
-install-data: 
+install-data: install-data-local
 	@$(NORMAL_INSTALL)
 
 install: install-exec install-data all
 	@:
 
-uninstall: 
+uninstall: uninstall-local
 
 all: Makefile
 
@@ -195,18 +195,18 @@ distclean-generic clean-generic maintainer-clean-generic clean \
 mostlyclean distclean maintainer-clean
 
 
-# localclean:
+# clean-local:
 # 	rm -f $(TABLES)
 
-install-data:
+install-data-local:
 	$(INSTALL) -d $(datadir)/lilypond/init
 	$(INSTALL) -m 644 $(INIFILES) $(datadir)/lilypond/init
 
-uninstall-data:
+uninstall-local:
 	for i in $(INIFILES) ; do rm -f $(datadir)/lilypond/init/$$i; done
 	-rmdir $(datadir)/lilypond/init $(datadir)/lilypond/
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/init/engraver.ly b/init/engraver.ly
index 6ab87d1c81..f31288c87d 100644
--- a/init/engraver.ly
+++ b/init/engraver.ly
@@ -14,7 +14,9 @@ Staff = \translator {
 	  \consists "Staff_sym_engraver";
 	  \consists "Collision_engraver";
 	  \consists "Rest_collision_engraver";
+	\consists "Separating_line_group_engraver";
 	  \consists "Line_group_engraver";
+	  
 	  \accepts "Voice";
 }
 
@@ -78,6 +80,7 @@ Lyric_voice =
 \translator{
 	\type "Engraver_group_engraver";
 
+	\consists "Separating_line_group_engraver";
 	\consists "Lyric_engraver";
 	\consists "Line_group_engraver";
 	\consists "Beam_req_swallow_translator";
diff --git a/init/feta11.ly b/init/feta11.ly
new file mode 100644
index 0000000000..0e45818ff0
--- /dev/null
+++ b/init/feta11.ly
@@ -0,0 +1,88 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta11.log
+% name=\symboltables {
+    "rests"	 = \table {
+        "0"	"\\wholerest"	0.00\pt	4.12\pt	-1.72\pt	0.00\pt	
+        "1"	"\\halfrest"	0.00\pt	4.12\pt	0.00\pt	1.72\pt	
+        "0o"	"\\outsidewholerest"	-1.72\pt	5.84\pt	-1.72\pt	0.28\pt	
+        "1o"	"\\outsidehalfrest"	-1.72\pt	5.84\pt	-0.28\pt	1.72\pt	
+        "2"	"\\quartrest"	0.00\pt	2.97\pt	2.06\pt	9.90\pt	
+        "3"	"\\eighthrest"	0.00\pt	3.67\pt	2.75\pt	7.81\pt	
+        "4"	"\\sixteenthrest"	0.00\pt	4.27\pt	0.00\pt	7.81\pt	
+        "5"	"\\thirtysecondrest"	0.00\pt	4.81\pt	0.00\pt	10.56\pt	
+        "6"	"\\sixtyfourthrest"	0.00\pt	5.16\pt	0.00\pt	13.31\pt	
+        "7"	"\\hundredtwentyeighthrest"	0.00\pt	5.75\pt	0.00\pt	16.06\pt	
+        }
+    "accidentals"	 = \table {
+        "1"	"\\sharp"	0.00\pt	3.03\pt	-4.12\pt	4.12\pt	
+        "0"	"\\natural"	0.00\pt	1.83\pt	-4.12\pt	4.12\pt	
+        "-1"	"\\flat"	-0.33\pt	2.20\pt	-1.38\pt	5.50\pt	
+        "-2"	"\\flatflat"	-0.33\pt	3.99\pt	-1.38\pt	5.50\pt	
+        "2"	"\\sharpsharp"	0.00\pt	2.75\pt	-1.38\pt	1.38\pt	
+        }
+    "dots"	 = \table {
+        "dot"	"\\dot"	0.00\pt	1.24\pt	-0.62\pt	0.62\pt	
+        "repeatcolon"	"\\repeatcolon"	0.00\pt	1.24\pt	-1.38\pt	1.38\pt	
+        }
+    "balls"	 = \table {
+        "-1"	"\\brevisball"	0.00\pt	5.50\pt	-1.51\pt	1.51\pt	
+        "-1l"	"\\brevisledger"	-1.38\pt	6.88\pt	-0.28\pt	0.28\pt	
+        "-2"	"\\longaball"	0.00\pt	5.50\pt	-1.51\pt	1.51\pt	
+        "-2l"	"\\longaledger"	-1.38\pt	6.88\pt	-0.28\pt	0.28\pt	
+        "0"	"\\wholeball"	0.00\pt	5.45\pt	-1.51\pt	1.51\pt	
+        "0l"	"\\wholeledger"	-1.36\pt	6.81\pt	-0.28\pt	0.28\pt	
+        "1"	"\\halfball"	0.00\pt	3.79\pt	-1.51\pt	1.51\pt	
+        "1l"	"\\halfledger"	-0.95\pt	4.74\pt	-0.28\pt	0.28\pt	
+        "2"	"\\quartball"	0.00\pt	3.63\pt	-1.51\pt	1.51\pt	
+        "2l"	"\\quartledger"	-0.91\pt	4.54\pt	-0.28\pt	0.28\pt	
+        }
+    "scripts"	 = \table {
+        "ufermata"	"\\ufermata"	-3.64\pt	3.64\pt	-0.21\pt	3.99\pt	
+        "dfermata"	"\\dfermata"	-3.64\pt	3.64\pt	-3.99\pt	0.21\pt	
+        "sforzato"	"\\sforzatoaccent"	-2.47\pt	2.47\pt	-1.38\pt	1.38\pt	
+        "staccato"	"\\staccato"	-0.41\pt	0.41\pt	-0.41\pt	0.41\pt	
+        "ustaccatissimo"	"\\ustaccatissimo"	-0.55\pt	0.55\pt	-0.20\pt	2.75\pt	
+        "dstaccatissimo"	"\\dstaccatissimo"	-0.55\pt	0.55\pt	-2.75\pt	0.20\pt	
+        "tenuto"	"\\tenuto"	-2.47\pt	2.47\pt	-0.17\pt	0.17\pt	
+        "umarcato"	"\\umarcato"	-1.38\pt	1.38\pt	0.00\pt	3.03\pt	
+        "dmarcato"	"\\dmarcato"	-1.38\pt	1.38\pt	-3.03\pt	0.00\pt	
+        "open"	"\\ouvert"	-1.10\pt	1.10\pt	-1.38\pt	1.38\pt	
+        "stopped"	"\\plusstop"	-1.51\pt	1.51\pt	-1.51\pt	1.51\pt	
+        "upbow"	"\\upbow"	-1.79\pt	1.79\pt	0.00\pt	5.72\pt	
+        "downbow"	"\\downbow"	-2.06\pt	2.06\pt	0.00\pt	3.67\pt	
+        "turn"	"\\turn"	-3.01\pt	3.01\pt	-1.46\pt	1.46\pt	
+        "trill"	"\\trill"	-2.75\pt	2.75\pt	0.00\pt	6.19\pt	
+        "upedalheel"	"\\upedalheel"	-1.38\pt	1.38\pt	-1.38\pt	1.83\pt	
+        "dpedalheel"	"\\dpedalheel"	-1.38\pt	1.38\pt	-1.83\pt	1.38\pt	
+        "upedaltoe"	"\\upedaltoe"	-1.38\pt	1.38\pt	0.00\pt	4.12\pt	
+        "dpedaltoe"	"\\dpedaltoe"	-1.38\pt	1.38\pt	-4.12\pt	0.00\pt	
+        "flageolet"	"\\flageolet"	-1.47\pt	1.47\pt	-1.47\pt	1.47\pt	
+        "trilelement"	"\\trilelement"	-1.38\pt	0.72\pt	-1.51\pt	1.51\pt	
+        "prall"	"\\prall"	-2.42\pt	2.42\pt	-1.51\pt	1.51\pt	
+        "mordent"	"\\mordent"	-2.42\pt	2.42\pt	-1.51\pt	1.51\pt	
+        "prallprall"	"\\prallprall"	-3.47\pt	3.47\pt	-1.51\pt	1.51\pt	
+        "prallmordent"	"\\prallmordent"	-3.47\pt	3.47\pt	-1.51\pt	1.51\pt	
+        "upprall"	"\\upprall"	-3.47\pt	3.47\pt	-1.51\pt	1.51\pt	
+        "downprall"	"\\downprall"	-3.47\pt	3.47\pt	-1.51\pt	1.51\pt	
+        }
+    "flags"	 = \table {
+        "u3"	"\\eighthflag"	-0.14\pt	3.39\pt	-8.43\pt	0.14\pt	
+        "u4"	"\\sixteenthflag"	-0.14\pt	3.39\pt	-9.80\pt	0.14\pt	
+        "u5"	"\\thirtysecondflag"	-0.14\pt	3.39\pt	-11.87\pt	0.14\pt	
+        "u6"	"\\sixtyfourthflag"	-0.14\pt	3.39\pt	-14.62\pt	0.14\pt	
+        "d3"	"\\deighthflag"	-0.14\pt	3.76\pt	-0.14\pt	8.02\pt	
+        "d4"	"\\dsixteenthflag"	-0.14\pt	3.76\pt	-0.14\pt	8.43\pt	
+        "d5"	"\\dthirtysecondflag"	-0.14\pt	3.76\pt	-0.14\pt	10.77\pt	
+        "d6"	"\\dsixtyfourthflag"	-0.14\pt	3.76\pt	-0.14\pt	12.14\pt	
+        }
+    "clefs"	 = \table {
+        "alto"	"\\altoclef"	-2.75\pt	10.24\pt	-5.50\pt	5.50\pt	
+        "alto_change"	"\\caltoclef"	-2.20\pt	8.19\pt	-4.40\pt	4.40\pt	
+        "bass"	"\\bassclef"	-1.38\pt	9.90\pt	-6.88\pt	2.75\pt	
+        "bass_change"	"\\cbassclef"	-1.10\pt	7.92\pt	-5.50\pt	2.20\pt	
+        "violin"	"\\violinclef"	-2.40\pt	10.28\pt	-8.25\pt	13.75\pt	
+        "violin_change"	"\\cviolinclef"	-2.08\pt	8.06\pt	-6.60\pt	11.00\pt	
+        }
+    %  } % $name
diff --git a/init/feta13.ly b/init/feta13.ly
new file mode 100644
index 0000000000..a4a20f78b7
--- /dev/null
+++ b/init/feta13.ly
@@ -0,0 +1,88 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta13.log
+% name=\symboltables {
+    "rests"	 = \table {
+        "0"	"\\wholerest"	0.00\pt	4.88\pt	-2.03\pt	0.00\pt	
+        "1"	"\\halfrest"	0.00\pt	4.88\pt	0.00\pt	2.03\pt	
+        "0o"	"\\outsidewholerest"	-2.03\pt	6.91\pt	-2.03\pt	0.33\pt	
+        "1o"	"\\outsidehalfrest"	-2.03\pt	6.91\pt	-0.33\pt	2.03\pt	
+        "2"	"\\quartrest"	0.00\pt	3.51\pt	2.44\pt	11.70\pt	
+        "3"	"\\eighthrest"	0.00\pt	4.33\pt	3.25\pt	9.24\pt	
+        "4"	"\\sixteenthrest"	0.00\pt	5.04\pt	0.00\pt	9.24\pt	
+        "5"	"\\thirtysecondrest"	0.00\pt	5.69\pt	0.00\pt	12.49\pt	
+        "6"	"\\sixtyfourthrest"	0.00\pt	6.10\pt	0.00\pt	15.74\pt	
+        "7"	"\\hundredtwentyeighthrest"	0.00\pt	6.79\pt	0.00\pt	18.99\pt	
+        }
+    "accidentals"	 = \table {
+        "1"	"\\sharp"	0.00\pt	3.58\pt	-4.88\pt	4.88\pt	
+        "0"	"\\natural"	0.00\pt	2.17\pt	-4.88\pt	4.88\pt	
+        "-1"	"\\flat"	-0.39\pt	2.60\pt	-1.62\pt	6.50\pt	
+        "-2"	"\\flatflat"	-0.39\pt	4.71\pt	-1.62\pt	6.50\pt	
+        "2"	"\\sharpsharp"	0.00\pt	3.25\pt	-1.62\pt	1.62\pt	
+        }
+    "dots"	 = \table {
+        "dot"	"\\dot"	0.00\pt	1.46\pt	-0.73\pt	0.73\pt	
+        "repeatcolon"	"\\repeatcolon"	0.00\pt	1.46\pt	-1.62\pt	1.62\pt	
+        }
+    "balls"	 = \table {
+        "-1"	"\\brevisball"	0.00\pt	6.50\pt	-1.79\pt	1.79\pt	
+        "-1l"	"\\brevisledger"	-1.62\pt	8.12\pt	-0.33\pt	0.33\pt	
+        "-2"	"\\longaball"	0.00\pt	6.50\pt	-1.79\pt	1.79\pt	
+        "-2l"	"\\longaledger"	-1.62\pt	8.12\pt	-0.33\pt	0.33\pt	
+        "0"	"\\wholeball"	0.00\pt	6.44\pt	-1.79\pt	1.79\pt	
+        "0l"	"\\wholeledger"	-1.61\pt	8.04\pt	-0.33\pt	0.33\pt	
+        "1"	"\\halfball"	0.00\pt	4.48\pt	-1.79\pt	1.79\pt	
+        "1l"	"\\halfledger"	-1.12\pt	5.60\pt	-0.33\pt	0.33\pt	
+        "2"	"\\quartball"	0.00\pt	4.29\pt	-1.79\pt	1.79\pt	
+        "2l"	"\\quartledger"	-1.07\pt	5.37\pt	-0.33\pt	0.33\pt	
+        }
+    "scripts"	 = \table {
+        "ufermata"	"\\ufermata"	-4.31\pt	4.31\pt	-0.24\pt	4.71\pt	
+        "dfermata"	"\\dfermata"	-4.31\pt	4.31\pt	-4.71\pt	0.24\pt	
+        "sforzato"	"\\sforzatoaccent"	-2.92\pt	2.92\pt	-1.62\pt	1.62\pt	
+        "staccato"	"\\staccato"	-0.49\pt	0.49\pt	-0.49\pt	0.49\pt	
+        "ustaccatissimo"	"\\ustaccatissimo"	-0.65\pt	0.65\pt	-0.20\pt	3.25\pt	
+        "dstaccatissimo"	"\\dstaccatissimo"	-0.65\pt	0.65\pt	-3.25\pt	0.20\pt	
+        "tenuto"	"\\tenuto"	-2.92\pt	2.92\pt	-0.20\pt	0.20\pt	
+        "umarcato"	"\\umarcato"	-1.62\pt	1.62\pt	0.00\pt	3.58\pt	
+        "dmarcato"	"\\dmarcato"	-1.62\pt	1.62\pt	-3.58\pt	0.00\pt	
+        "open"	"\\ouvert"	-1.30\pt	1.30\pt	-1.62\pt	1.62\pt	
+        "stopped"	"\\plusstop"	-1.79\pt	1.79\pt	-1.79\pt	1.79\pt	
+        "upbow"	"\\upbow"	-2.11\pt	2.11\pt	0.00\pt	6.76\pt	
+        "downbow"	"\\downbow"	-2.44\pt	2.44\pt	0.00\pt	4.33\pt	
+        "turn"	"\\turn"	-3.55\pt	3.55\pt	-1.72\pt	1.72\pt	
+        "trill"	"\\trill"	-3.25\pt	3.25\pt	0.00\pt	7.31\pt	
+        "upedalheel"	"\\upedalheel"	-1.62\pt	1.62\pt	-1.62\pt	2.17\pt	
+        "dpedalheel"	"\\dpedalheel"	-1.62\pt	1.62\pt	-2.17\pt	1.62\pt	
+        "upedaltoe"	"\\upedaltoe"	-1.62\pt	1.62\pt	0.00\pt	4.88\pt	
+        "dpedaltoe"	"\\dpedaltoe"	-1.62\pt	1.62\pt	-4.88\pt	0.00\pt	
+        "flageolet"	"\\flageolet"	-1.73\pt	1.73\pt	-1.73\pt	1.73\pt	
+        "trilelement"	"\\trilelement"	-1.62\pt	0.85\pt	-1.79\pt	1.79\pt	
+        "prall"	"\\prall"	-2.86\pt	2.86\pt	-1.79\pt	1.79\pt	
+        "mordent"	"\\mordent"	-2.86\pt	2.86\pt	-1.79\pt	1.79\pt	
+        "prallprall"	"\\prallprall"	-4.10\pt	4.10\pt	-1.79\pt	1.79\pt	
+        "prallmordent"	"\\prallmordent"	-4.10\pt	4.10\pt	-1.79\pt	1.79\pt	
+        "upprall"	"\\upprall"	-4.10\pt	4.10\pt	-1.79\pt	1.79\pt	
+        "downprall"	"\\downprall"	-4.10\pt	4.10\pt	-1.79\pt	1.79\pt	
+        }
+    "flags"	 = \table {
+        "u3"	"\\eighthflag"	-0.16\pt	4.01\pt	-9.96\pt	0.16\pt	
+        "u4"	"\\sixteenthflag"	-0.16\pt	4.01\pt	-11.59\pt	0.16\pt	
+        "u5"	"\\thirtysecondflag"	-0.16\pt	4.01\pt	-14.02\pt	0.16\pt	
+        "u6"	"\\sixtyfourthflag"	-0.16\pt	4.01\pt	-17.27\pt	0.16\pt	
+        "d3"	"\\deighthflag"	-0.16\pt	4.44\pt	-0.16\pt	9.47\pt	
+        "d4"	"\\dsixteenthflag"	-0.16\pt	4.44\pt	-0.16\pt	9.96\pt	
+        "d5"	"\\dthirtysecondflag"	-0.16\pt	4.44\pt	-0.16\pt	12.72\pt	
+        "d6"	"\\dsixtyfourthflag"	-0.16\pt	4.44\pt	-0.16\pt	14.35\pt	
+        }
+    "clefs"	 = \table {
+        "alto"	"\\altoclef"	-3.25\pt	12.10\pt	-6.50\pt	6.50\pt	
+        "alto_change"	"\\caltoclef"	-2.60\pt	9.68\pt	-5.20\pt	5.20\pt	
+        "bass"	"\\bassclef"	-1.62\pt	11.70\pt	-8.12\pt	3.25\pt	
+        "bass_change"	"\\cbassclef"	-1.30\pt	9.36\pt	-6.50\pt	2.60\pt	
+        "violin"	"\\violinclef"	-2.83\pt	12.15\pt	-9.75\pt	16.25\pt	
+        "violin_change"	"\\cviolinclef"	-2.46\pt	9.52\pt	-7.80\pt	13.00\pt	
+        }
+    %  } % $name
diff --git a/init/feta16.ly b/init/feta16.ly
new file mode 100644
index 0000000000..bca45d1958
--- /dev/null
+++ b/init/feta16.ly
@@ -0,0 +1,88 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta16.log
+% name=\symboltables {
+    "rests"	 = \table {
+        "0"	"\\wholerest"	0.00\pt	6.00\pt	-2.50\pt	0.00\pt	
+        "1"	"\\halfrest"	0.00\pt	6.00\pt	0.00\pt	2.50\pt	
+        "0o"	"\\outsidewholerest"	-2.50\pt	8.50\pt	-2.50\pt	0.40\pt	
+        "1o"	"\\outsidehalfrest"	-2.50\pt	8.50\pt	-0.40\pt	2.50\pt	
+        "2"	"\\quartrest"	0.00\pt	4.32\pt	3.00\pt	14.40\pt	
+        "3"	"\\eighthrest"	0.00\pt	5.33\pt	4.00\pt	11.37\pt	
+        "4"	"\\sixteenthrest"	0.00\pt	6.21\pt	0.00\pt	11.37\pt	
+        "5"	"\\thirtysecondrest"	0.00\pt	7.00\pt	0.00\pt	15.37\pt	
+        "6"	"\\sixtyfourthrest"	0.00\pt	7.51\pt	0.00\pt	19.37\pt	
+        "7"	"\\hundredtwentyeighthrest"	0.00\pt	8.36\pt	0.00\pt	23.37\pt	
+        }
+    "accidentals"	 = \table {
+        "1"	"\\sharp"	0.00\pt	4.40\pt	-6.00\pt	6.00\pt	
+        "0"	"\\natural"	0.00\pt	2.67\pt	-6.00\pt	6.00\pt	
+        "-1"	"\\flat"	-0.48\pt	3.20\pt	-2.00\pt	8.00\pt	
+        "-2"	"\\flatflat"	-0.48\pt	5.80\pt	-2.00\pt	8.00\pt	
+        "2"	"\\sharpsharp"	0.00\pt	4.00\pt	-2.00\pt	2.00\pt	
+        }
+    "dots"	 = \table {
+        "dot"	"\\dot"	0.00\pt	1.80\pt	-0.90\pt	0.90\pt	
+        "repeatcolon"	"\\repeatcolon"	0.00\pt	1.80\pt	-2.00\pt	2.00\pt	
+        }
+    "balls"	 = \table {
+        "-1"	"\\brevisball"	0.00\pt	8.00\pt	-2.20\pt	2.20\pt	
+        "-1l"	"\\brevisledger"	-2.00\pt	10.00\pt	-0.40\pt	0.40\pt	
+        "-2"	"\\longaball"	0.00\pt	8.00\pt	-2.20\pt	2.20\pt	
+        "-2l"	"\\longaledger"	-2.00\pt	10.00\pt	-0.40\pt	0.40\pt	
+        "0"	"\\wholeball"	0.00\pt	7.92\pt	-2.20\pt	2.20\pt	
+        "0l"	"\\wholeledger"	-1.98\pt	9.90\pt	-0.40\pt	0.40\pt	
+        "1"	"\\halfball"	0.00\pt	5.51\pt	-2.20\pt	2.20\pt	
+        "1l"	"\\halfledger"	-1.38\pt	6.89\pt	-0.40\pt	0.40\pt	
+        "2"	"\\quartball"	0.00\pt	5.28\pt	-2.20\pt	2.20\pt	
+        "2l"	"\\quartledger"	-1.32\pt	6.61\pt	-0.40\pt	0.40\pt	
+        }
+    "scripts"	 = \table {
+        "ufermata"	"\\ufermata"	-5.30\pt	5.30\pt	-0.30\pt	5.80\pt	
+        "dfermata"	"\\dfermata"	-5.30\pt	5.30\pt	-5.80\pt	0.30\pt	
+        "sforzato"	"\\sforzatoaccent"	-3.60\pt	3.60\pt	-2.00\pt	2.00\pt	
+        "staccato"	"\\staccato"	-0.60\pt	0.60\pt	-0.60\pt	0.60\pt	
+        "ustaccatissimo"	"\\ustaccatissimo"	-0.80\pt	0.80\pt	-0.20\pt	4.00\pt	
+        "dstaccatissimo"	"\\dstaccatissimo"	-0.80\pt	0.80\pt	-4.00\pt	0.20\pt	
+        "tenuto"	"\\tenuto"	-3.60\pt	3.60\pt	-0.24\pt	0.24\pt	
+        "umarcato"	"\\umarcato"	-2.00\pt	2.00\pt	0.00\pt	4.40\pt	
+        "dmarcato"	"\\dmarcato"	-2.00\pt	2.00\pt	-4.40\pt	0.00\pt	
+        "open"	"\\ouvert"	-1.60\pt	1.60\pt	-2.00\pt	2.00\pt	
+        "stopped"	"\\plusstop"	-2.20\pt	2.20\pt	-2.20\pt	2.20\pt	
+        "upbow"	"\\upbow"	-2.60\pt	2.60\pt	0.00\pt	8.32\pt	
+        "downbow"	"\\downbow"	-3.00\pt	3.00\pt	0.00\pt	5.33\pt	
+        "turn"	"\\turn"	-4.38\pt	4.38\pt	-2.12\pt	2.12\pt	
+        "trill"	"\\trill"	-4.00\pt	4.00\pt	0.00\pt	9.00\pt	
+        "upedalheel"	"\\upedalheel"	-2.00\pt	2.00\pt	-2.00\pt	2.67\pt	
+        "dpedalheel"	"\\dpedalheel"	-2.00\pt	2.00\pt	-2.67\pt	2.00\pt	
+        "upedaltoe"	"\\upedaltoe"	-2.00\pt	2.00\pt	0.00\pt	6.00\pt	
+        "dpedaltoe"	"\\dpedaltoe"	-2.00\pt	2.00\pt	-6.00\pt	0.00\pt	
+        "flageolet"	"\\flageolet"	-2.13\pt	2.13\pt	-2.13\pt	2.13\pt	
+        "trilelement"	"\\trilelement"	-2.00\pt	1.05\pt	-2.20\pt	2.20\pt	
+        "prall"	"\\prall"	-3.52\pt	3.52\pt	-2.20\pt	2.20\pt	
+        "mordent"	"\\mordent"	-3.52\pt	3.52\pt	-2.20\pt	2.20\pt	
+        "prallprall"	"\\prallprall"	-5.05\pt	5.05\pt	-2.20\pt	2.20\pt	
+        "prallmordent"	"\\prallmordent"	-5.05\pt	5.05\pt	-2.20\pt	2.20\pt	
+        "upprall"	"\\upprall"	-5.05\pt	5.05\pt	-2.20\pt	2.20\pt	
+        "downprall"	"\\downprall"	-5.05\pt	5.05\pt	-2.20\pt	2.20\pt	
+        }
+    "flags"	 = \table {
+        "u3"	"\\eighthflag"	-0.20\pt	4.94\pt	-12.26\pt	0.20\pt	
+        "u4"	"\\sixteenthflag"	-0.20\pt	4.94\pt	-14.26\pt	0.20\pt	
+        "u5"	"\\thirtysecondflag"	-0.20\pt	4.94\pt	-17.26\pt	0.20\pt	
+        "u6"	"\\sixtyfourthflag"	-0.20\pt	4.94\pt	-21.26\pt	0.20\pt	
+        "d3"	"\\deighthflag"	-0.20\pt	5.46\pt	-0.20\pt	11.66\pt	
+        "d4"	"\\dsixteenthflag"	-0.20\pt	5.46\pt	-0.20\pt	12.26\pt	
+        "d5"	"\\dthirtysecondflag"	-0.20\pt	5.46\pt	-0.20\pt	15.66\pt	
+        "d6"	"\\dsixtyfourthflag"	-0.20\pt	5.46\pt	-0.20\pt	17.66\pt	
+        }
+    "clefs"	 = \table {
+        "alto"	"\\altoclef"	-4.00\pt	14.89\pt	-8.00\pt	8.00\pt	
+        "alto_change"	"\\caltoclef"	-3.20\pt	11.91\pt	-6.40\pt	6.40\pt	
+        "bass"	"\\bassclef"	-2.00\pt	14.40\pt	-10.00\pt	4.00\pt	
+        "bass_change"	"\\cbassclef"	-1.60\pt	11.52\pt	-8.00\pt	3.20\pt	
+        "violin"	"\\violinclef"	-3.49\pt	14.95\pt	-12.00\pt	20.00\pt	
+        "violin_change"	"\\cviolinclef"	-3.03\pt	11.72\pt	-9.60\pt	16.00\pt	
+        }
+    %  } % $name
diff --git a/init/feta19.ly b/init/feta19.ly
new file mode 100644
index 0000000000..cb34017790
--- /dev/null
+++ b/init/feta19.ly
@@ -0,0 +1,88 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta19.log
+% name=\symboltables {
+    "rests"	 = \table {
+        "0"	"\\wholerest"	0.00\pt	7.12\pt	-2.97\pt	0.00\pt	
+        "1"	"\\halfrest"	0.00\pt	7.12\pt	0.00\pt	2.97\pt	
+        "0o"	"\\outsidewholerest"	-2.97\pt	10.09\pt	-2.97\pt	0.48\pt	
+        "1o"	"\\outsidehalfrest"	-2.97\pt	10.09\pt	-0.48\pt	2.97\pt	
+        "2"	"\\quartrest"	0.00\pt	5.13\pt	3.56\pt	17.10\pt	
+        "3"	"\\eighthrest"	0.00\pt	6.33\pt	4.75\pt	13.50\pt	
+        "4"	"\\sixteenthrest"	0.00\pt	7.37\pt	0.00\pt	13.50\pt	
+        "5"	"\\thirtysecondrest"	0.00\pt	8.32\pt	0.00\pt	18.25\pt	
+        "6"	"\\sixtyfourthrest"	0.00\pt	8.92\pt	0.00\pt	23.00\pt	
+        "7"	"\\hundredtwentyeighthrest"	0.00\pt	9.93\pt	0.00\pt	27.75\pt	
+        }
+    "accidentals"	 = \table {
+        "1"	"\\sharp"	0.00\pt	5.23\pt	-7.12\pt	7.12\pt	
+        "0"	"\\natural"	0.00\pt	3.17\pt	-7.12\pt	7.12\pt	
+        "-1"	"\\flat"	-0.57\pt	3.80\pt	-2.38\pt	9.50\pt	
+        "-2"	"\\flatflat"	-0.57\pt	6.89\pt	-2.38\pt	9.50\pt	
+        "2"	"\\sharpsharp"	0.00\pt	4.75\pt	-2.38\pt	2.38\pt	
+        }
+    "dots"	 = \table {
+        "dot"	"\\dot"	0.00\pt	2.14\pt	-1.07\pt	1.07\pt	
+        "repeatcolon"	"\\repeatcolon"	0.00\pt	2.14\pt	-2.38\pt	2.38\pt	
+        }
+    "balls"	 = \table {
+        "-1"	"\\brevisball"	0.00\pt	9.50\pt	-2.61\pt	2.61\pt	
+        "-1l"	"\\brevisledger"	-2.38\pt	11.88\pt	-0.48\pt	0.48\pt	
+        "-2"	"\\longaball"	0.00\pt	9.50\pt	-2.61\pt	2.61\pt	
+        "-2l"	"\\longaledger"	-2.38\pt	11.88\pt	-0.48\pt	0.48\pt	
+        "0"	"\\wholeball"	0.00\pt	9.41\pt	-2.61\pt	2.61\pt	
+        "0l"	"\\wholeledger"	-2.35\pt	11.76\pt	-0.48\pt	0.48\pt	
+        "1"	"\\halfball"	0.00\pt	6.54\pt	-2.61\pt	2.61\pt	
+        "1l"	"\\halfledger"	-1.64\pt	8.18\pt	-0.48\pt	0.48\pt	
+        "2"	"\\quartball"	0.00\pt	6.27\pt	-2.61\pt	2.61\pt	
+        "2l"	"\\quartledger"	-1.57\pt	7.84\pt	-0.48\pt	0.48\pt	
+        }
+    "scripts"	 = \table {
+        "ufermata"	"\\ufermata"	-6.29\pt	6.29\pt	-0.36\pt	6.89\pt	
+        "dfermata"	"\\dfermata"	-6.29\pt	6.29\pt	-6.89\pt	0.36\pt	
+        "sforzato"	"\\sforzatoaccent"	-4.27\pt	4.27\pt	-2.38\pt	2.38\pt	
+        "staccato"	"\\staccato"	-0.71\pt	0.71\pt	-0.71\pt	0.71\pt	
+        "ustaccatissimo"	"\\ustaccatissimo"	-0.95\pt	0.95\pt	-0.20\pt	4.75\pt	
+        "dstaccatissimo"	"\\dstaccatissimo"	-0.95\pt	0.95\pt	-4.75\pt	0.20\pt	
+        "tenuto"	"\\tenuto"	-4.27\pt	4.27\pt	-0.29\pt	0.29\pt	
+        "umarcato"	"\\umarcato"	-2.38\pt	2.38\pt	0.00\pt	5.23\pt	
+        "dmarcato"	"\\dmarcato"	-2.38\pt	2.38\pt	-5.23\pt	0.00\pt	
+        "open"	"\\ouvert"	-1.90\pt	1.90\pt	-2.38\pt	2.38\pt	
+        "stopped"	"\\plusstop"	-2.61\pt	2.61\pt	-2.61\pt	2.61\pt	
+        "upbow"	"\\upbow"	-3.09\pt	3.09\pt	0.00\pt	9.88\pt	
+        "downbow"	"\\downbow"	-3.56\pt	3.56\pt	0.00\pt	6.33\pt	
+        "turn"	"\\turn"	-5.20\pt	5.20\pt	-2.51\pt	2.51\pt	
+        "trill"	"\\trill"	-4.75\pt	4.75\pt	0.00\pt	10.69\pt	
+        "upedalheel"	"\\upedalheel"	-2.38\pt	2.38\pt	-2.38\pt	3.17\pt	
+        "dpedalheel"	"\\dpedalheel"	-2.38\pt	2.38\pt	-3.17\pt	2.38\pt	
+        "upedaltoe"	"\\upedaltoe"	-2.38\pt	2.38\pt	0.00\pt	7.12\pt	
+        "dpedaltoe"	"\\dpedaltoe"	-2.38\pt	2.38\pt	-7.12\pt	0.00\pt	
+        "flageolet"	"\\flageolet"	-2.53\pt	2.53\pt	-2.53\pt	2.53\pt	
+        "trilelement"	"\\trilelement"	-2.38\pt	1.24\pt	-2.61\pt	2.61\pt	
+        "prall"	"\\prall"	-4.18\pt	4.18\pt	-2.61\pt	2.61\pt	
+        "mordent"	"\\mordent"	-4.18\pt	4.18\pt	-2.61\pt	2.61\pt	
+        "prallprall"	"\\prallprall"	-5.99\pt	5.99\pt	-2.61\pt	2.61\pt	
+        "prallmordent"	"\\prallmordent"	-5.99\pt	5.99\pt	-2.61\pt	2.61\pt	
+        "upprall"	"\\upprall"	-5.99\pt	5.99\pt	-2.61\pt	2.61\pt	
+        "downprall"	"\\downprall"	-5.99\pt	5.99\pt	-2.61\pt	2.61\pt	
+        }
+    "flags"	 = \table {
+        "u3"	"\\eighthflag"	-0.24\pt	5.86\pt	-14.56\pt	0.24\pt	
+        "u4"	"\\sixteenthflag"	-0.24\pt	5.86\pt	-16.93\pt	0.24\pt	
+        "u5"	"\\thirtysecondflag"	-0.24\pt	5.86\pt	-20.50\pt	0.24\pt	
+        "u6"	"\\sixtyfourthflag"	-0.24\pt	5.86\pt	-25.25\pt	0.24\pt	
+        "d3"	"\\deighthflag"	-0.24\pt	6.49\pt	-0.24\pt	13.85\pt	
+        "d4"	"\\dsixteenthflag"	-0.24\pt	6.49\pt	-0.24\pt	14.56\pt	
+        "d5"	"\\dthirtysecondflag"	-0.24\pt	6.49\pt	-0.24\pt	18.60\pt	
+        "d6"	"\\dsixtyfourthflag"	-0.24\pt	6.49\pt	-0.24\pt	20.97\pt	
+        }
+    "clefs"	 = \table {
+        "alto"	"\\altoclef"	-4.75\pt	17.68\pt	-9.50\pt	9.50\pt	
+        "alto_change"	"\\caltoclef"	-3.80\pt	14.14\pt	-7.60\pt	7.60\pt	
+        "bass"	"\\bassclef"	-2.38\pt	17.10\pt	-11.88\pt	4.75\pt	
+        "bass_change"	"\\cbassclef"	-1.90\pt	13.68\pt	-9.50\pt	3.80\pt	
+        "violin"	"\\violinclef"	-4.14\pt	17.75\pt	-14.25\pt	23.75\pt	
+        "violin_change"	"\\cviolinclef"	-3.60\pt	13.92\pt	-11.40\pt	19.00\pt	
+        }
+    %  } % $name
diff --git a/init/feta20.ly b/init/feta20.ly
new file mode 100644
index 0000000000..573788dd59
--- /dev/null
+++ b/init/feta20.ly
@@ -0,0 +1,88 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta20.log
+% name=\symboltables {
+    "rests"	 = \table {
+        "0"	"\\wholerest"	0.00\pt	7.50\pt	-3.12\pt	0.00\pt	
+        "1"	"\\halfrest"	0.00\pt	7.50\pt	0.00\pt	3.12\pt	
+        "0o"	"\\outsidewholerest"	-3.12\pt	10.62\pt	-3.12\pt	0.50\pt	
+        "1o"	"\\outsidehalfrest"	-3.12\pt	10.62\pt	-0.50\pt	3.12\pt	
+        "2"	"\\quartrest"	0.00\pt	5.40\pt	3.75\pt	18.00\pt	
+        "3"	"\\eighthrest"	0.00\pt	6.67\pt	5.00\pt	14.21\pt	
+        "4"	"\\sixteenthrest"	0.00\pt	7.76\pt	0.00\pt	14.21\pt	
+        "5"	"\\thirtysecondrest"	0.00\pt	8.75\pt	0.00\pt	19.21\pt	
+        "6"	"\\sixtyfourthrest"	0.00\pt	9.38\pt	0.00\pt	24.21\pt	
+        "7"	"\\hundredtwentyeighthrest"	0.00\pt	10.45\pt	0.00\pt	29.21\pt	
+        }
+    "accidentals"	 = \table {
+        "1"	"\\sharp"	0.00\pt	5.50\pt	-7.50\pt	7.50\pt	
+        "0"	"\\natural"	0.00\pt	3.33\pt	-7.50\pt	7.50\pt	
+        "-1"	"\\flat"	-0.60\pt	4.00\pt	-2.50\pt	10.00\pt	
+        "-2"	"\\flatflat"	-0.60\pt	7.25\pt	-2.50\pt	10.00\pt	
+        "2"	"\\sharpsharp"	0.00\pt	5.00\pt	-2.50\pt	2.50\pt	
+        }
+    "dots"	 = \table {
+        "dot"	"\\dot"	0.00\pt	2.25\pt	-1.12\pt	1.12\pt	
+        "repeatcolon"	"\\repeatcolon"	0.00\pt	2.25\pt	-2.50\pt	2.50\pt	
+        }
+    "balls"	 = \table {
+        "-1"	"\\brevisball"	0.00\pt	10.00\pt	-2.75\pt	2.75\pt	
+        "-1l"	"\\brevisledger"	-2.50\pt	12.50\pt	-0.50\pt	0.50\pt	
+        "-2"	"\\longaball"	0.00\pt	10.00\pt	-2.75\pt	2.75\pt	
+        "-2l"	"\\longaledger"	-2.50\pt	12.50\pt	-0.50\pt	0.50\pt	
+        "0"	"\\wholeball"	0.00\pt	9.90\pt	-2.75\pt	2.75\pt	
+        "0l"	"\\wholeledger"	-2.48\pt	12.38\pt	-0.50\pt	0.50\pt	
+        "1"	"\\halfball"	0.00\pt	6.89\pt	-2.75\pt	2.75\pt	
+        "1l"	"\\halfledger"	-1.72\pt	8.61\pt	-0.50\pt	0.50\pt	
+        "2"	"\\quartball"	0.00\pt	6.61\pt	-2.75\pt	2.75\pt	
+        "2l"	"\\quartledger"	-1.65\pt	8.26\pt	-0.50\pt	0.50\pt	
+        }
+    "scripts"	 = \table {
+        "ufermata"	"\\ufermata"	-6.63\pt	6.63\pt	-0.38\pt	7.25\pt	
+        "dfermata"	"\\dfermata"	-6.63\pt	6.63\pt	-7.25\pt	0.38\pt	
+        "sforzato"	"\\sforzatoaccent"	-4.50\pt	4.50\pt	-2.50\pt	2.50\pt	
+        "staccato"	"\\staccato"	-0.75\pt	0.75\pt	-0.75\pt	0.75\pt	
+        "ustaccatissimo"	"\\ustaccatissimo"	-1.00\pt	1.00\pt	-0.20\pt	5.00\pt	
+        "dstaccatissimo"	"\\dstaccatissimo"	-1.00\pt	1.00\pt	-5.00\pt	0.20\pt	
+        "tenuto"	"\\tenuto"	-4.50\pt	4.50\pt	-0.30\pt	0.30\pt	
+        "umarcato"	"\\umarcato"	-2.50\pt	2.50\pt	0.00\pt	5.50\pt	
+        "dmarcato"	"\\dmarcato"	-2.50\pt	2.50\pt	-5.50\pt	0.00\pt	
+        "open"	"\\ouvert"	-2.00\pt	2.00\pt	-2.50\pt	2.50\pt	
+        "stopped"	"\\plusstop"	-2.75\pt	2.75\pt	-2.75\pt	2.75\pt	
+        "upbow"	"\\upbow"	-3.25\pt	3.25\pt	0.00\pt	10.40\pt	
+        "downbow"	"\\downbow"	-3.75\pt	3.75\pt	0.00\pt	6.67\pt	
+        "turn"	"\\turn"	-5.47\pt	5.47\pt	-2.65\pt	2.65\pt	
+        "trill"	"\\trill"	-5.00\pt	5.00\pt	0.00\pt	11.25\pt	
+        "upedalheel"	"\\upedalheel"	-2.50\pt	2.50\pt	-2.50\pt	3.33\pt	
+        "dpedalheel"	"\\dpedalheel"	-2.50\pt	2.50\pt	-3.33\pt	2.50\pt	
+        "upedaltoe"	"\\upedaltoe"	-2.50\pt	2.50\pt	0.00\pt	7.50\pt	
+        "dpedaltoe"	"\\dpedaltoe"	-2.50\pt	2.50\pt	-7.50\pt	0.00\pt	
+        "flageolet"	"\\flageolet"	-2.67\pt	2.67\pt	-2.67\pt	2.67\pt	
+        "trilelement"	"\\trilelement"	-2.50\pt	1.31\pt	-2.75\pt	2.75\pt	
+        "prall"	"\\prall"	-4.40\pt	4.40\pt	-2.75\pt	2.75\pt	
+        "mordent"	"\\mordent"	-4.40\pt	4.40\pt	-2.75\pt	2.75\pt	
+        "prallprall"	"\\prallprall"	-6.31\pt	6.31\pt	-2.75\pt	2.75\pt	
+        "prallmordent"	"\\prallmordent"	-6.31\pt	6.31\pt	-2.75\pt	2.75\pt	
+        "upprall"	"\\upprall"	-6.31\pt	6.31\pt	-2.75\pt	2.75\pt	
+        "downprall"	"\\downprall"	-6.31\pt	6.31\pt	-2.75\pt	2.75\pt	
+        }
+    "flags"	 = \table {
+        "u3"	"\\eighthflag"	-0.25\pt	6.17\pt	-15.33\pt	0.25\pt	
+        "u4"	"\\sixteenthflag"	-0.25\pt	6.17\pt	-17.83\pt	0.25\pt	
+        "u5"	"\\thirtysecondflag"	-0.25\pt	6.17\pt	-21.58\pt	0.25\pt	
+        "u6"	"\\sixtyfourthflag"	-0.25\pt	6.17\pt	-26.58\pt	0.25\pt	
+        "d3"	"\\deighthflag"	-0.25\pt	6.83\pt	-0.25\pt	14.58\pt	
+        "d4"	"\\dsixteenthflag"	-0.25\pt	6.83\pt	-0.25\pt	15.33\pt	
+        "d5"	"\\dthirtysecondflag"	-0.25\pt	6.83\pt	-0.25\pt	19.58\pt	
+        "d6"	"\\dsixtyfourthflag"	-0.25\pt	6.83\pt	-0.25\pt	22.08\pt	
+        }
+    "clefs"	 = \table {
+        "alto"	"\\altoclef"	-5.00\pt	18.61\pt	-10.00\pt	10.00\pt	
+        "alto_change"	"\\caltoclef"	-4.00\pt	14.89\pt	-8.00\pt	8.00\pt	
+        "bass"	"\\bassclef"	-2.50\pt	18.00\pt	-12.50\pt	5.00\pt	
+        "bass_change"	"\\cbassclef"	-2.00\pt	14.40\pt	-10.00\pt	4.00\pt	
+        "violin"	"\\violinclef"	-4.36\pt	18.69\pt	-15.00\pt	25.00\pt	
+        "violin_change"	"\\cviolinclef"	-3.79\pt	14.65\pt	-12.00\pt	20.00\pt	
+        }
+    %  } % $name
diff --git a/init/feta23.ly b/init/feta23.ly
new file mode 100644
index 0000000000..2375eb3f50
--- /dev/null
+++ b/init/feta23.ly
@@ -0,0 +1,88 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta23.log
+% name=\symboltables {
+    "rests"	 = \table {
+        "0"	"\\wholerest"	0.00\pt	8.44\pt	-3.52\pt	0.00\pt	
+        "1"	"\\halfrest"	0.00\pt	8.44\pt	0.00\pt	3.52\pt	
+        "0o"	"\\outsidewholerest"	-3.52\pt	11.95\pt	-3.52\pt	0.56\pt	
+        "1o"	"\\outsidehalfrest"	-3.52\pt	11.95\pt	-0.56\pt	3.52\pt	
+        "2"	"\\quartrest"	0.00\pt	6.08\pt	4.22\pt	20.25\pt	
+        "3"	"\\eighthrest"	0.00\pt	7.50\pt	5.62\pt	15.98\pt	
+        "4"	"\\sixteenthrest"	0.00\pt	8.73\pt	0.00\pt	15.98\pt	
+        "5"	"\\thirtysecondrest"	0.00\pt	9.85\pt	0.00\pt	21.61\pt	
+        "6"	"\\sixtyfourthrest"	0.00\pt	10.56\pt	0.00\pt	27.23\pt	
+        "7"	"\\hundredtwentyeighthrest"	0.00\pt	11.75\pt	0.00\pt	32.86\pt	
+        }
+    "accidentals"	 = \table {
+        "1"	"\\sharp"	0.00\pt	6.19\pt	-8.44\pt	8.44\pt	
+        "0"	"\\natural"	0.00\pt	3.75\pt	-8.44\pt	8.44\pt	
+        "-1"	"\\flat"	-0.68\pt	4.50\pt	-2.81\pt	11.25\pt	
+        "-2"	"\\flatflat"	-0.68\pt	8.16\pt	-2.81\pt	11.25\pt	
+        "2"	"\\sharpsharp"	0.00\pt	5.62\pt	-2.81\pt	2.81\pt	
+        }
+    "dots"	 = \table {
+        "dot"	"\\dot"	0.00\pt	2.53\pt	-1.27\pt	1.27\pt	
+        "repeatcolon"	"\\repeatcolon"	0.00\pt	2.53\pt	-2.81\pt	2.81\pt	
+        }
+    "balls"	 = \table {
+        "-1"	"\\brevisball"	0.00\pt	11.25\pt	-3.09\pt	3.09\pt	
+        "-1l"	"\\brevisledger"	-2.81\pt	14.06\pt	-0.56\pt	0.56\pt	
+        "-2"	"\\longaball"	0.00\pt	11.25\pt	-3.09\pt	3.09\pt	
+        "-2l"	"\\longaledger"	-2.81\pt	14.06\pt	-0.56\pt	0.56\pt	
+        "0"	"\\wholeball"	0.00\pt	11.14\pt	-3.09\pt	3.09\pt	
+        "0l"	"\\wholeledger"	-2.78\pt	13.92\pt	-0.56\pt	0.56\pt	
+        "1"	"\\halfball"	0.00\pt	7.75\pt	-3.09\pt	3.09\pt	
+        "1l"	"\\halfledger"	-1.94\pt	9.69\pt	-0.56\pt	0.56\pt	
+        "2"	"\\quartball"	0.00\pt	7.43\pt	-3.09\pt	3.09\pt	
+        "2l"	"\\quartledger"	-1.86\pt	9.29\pt	-0.56\pt	0.56\pt	
+        }
+    "scripts"	 = \table {
+        "ufermata"	"\\ufermata"	-7.45\pt	7.45\pt	-0.42\pt	8.16\pt	
+        "dfermata"	"\\dfermata"	-7.45\pt	7.45\pt	-8.16\pt	0.42\pt	
+        "sforzato"	"\\sforzatoaccent"	-5.06\pt	5.06\pt	-2.81\pt	2.81\pt	
+        "staccato"	"\\staccato"	-0.84\pt	0.84\pt	-0.84\pt	0.84\pt	
+        "ustaccatissimo"	"\\ustaccatissimo"	-1.13\pt	1.13\pt	-0.20\pt	5.63\pt	
+        "dstaccatissimo"	"\\dstaccatissimo"	-1.13\pt	1.13\pt	-5.63\pt	0.20\pt	
+        "tenuto"	"\\tenuto"	-5.06\pt	5.06\pt	-0.34\pt	0.34\pt	
+        "umarcato"	"\\umarcato"	-2.81\pt	2.81\pt	0.00\pt	6.19\pt	
+        "dmarcato"	"\\dmarcato"	-2.81\pt	2.81\pt	-6.19\pt	0.00\pt	
+        "open"	"\\ouvert"	-2.25\pt	2.25\pt	-2.81\pt	2.81\pt	
+        "stopped"	"\\plusstop"	-3.09\pt	3.09\pt	-3.09\pt	3.09\pt	
+        "upbow"	"\\upbow"	-3.66\pt	3.66\pt	0.00\pt	11.70\pt	
+        "downbow"	"\\downbow"	-4.22\pt	4.22\pt	0.00\pt	7.50\pt	
+        "turn"	"\\turn"	-6.15\pt	6.15\pt	-2.98\pt	2.98\pt	
+        "trill"	"\\trill"	-5.62\pt	5.62\pt	0.00\pt	12.66\pt	
+        "upedalheel"	"\\upedalheel"	-2.81\pt	2.81\pt	-2.81\pt	3.75\pt	
+        "dpedalheel"	"\\dpedalheel"	-2.81\pt	2.81\pt	-3.75\pt	2.81\pt	
+        "upedaltoe"	"\\upedaltoe"	-2.81\pt	2.81\pt	0.00\pt	8.44\pt	
+        "dpedaltoe"	"\\dpedaltoe"	-2.81\pt	2.81\pt	-8.44\pt	0.00\pt	
+        "flageolet"	"\\flageolet"	-3.00\pt	3.00\pt	-3.00\pt	3.00\pt	
+        "trilelement"	"\\trilelement"	-2.81\pt	1.47\pt	-3.09\pt	3.09\pt	
+        "prall"	"\\prall"	-4.95\pt	4.95\pt	-3.09\pt	3.09\pt	
+        "mordent"	"\\mordent"	-4.95\pt	4.95\pt	-3.09\pt	3.09\pt	
+        "prallprall"	"\\prallprall"	-7.09\pt	7.09\pt	-3.09\pt	3.09\pt	
+        "prallmordent"	"\\prallmordent"	-7.09\pt	7.09\pt	-3.09\pt	3.09\pt	
+        "upprall"	"\\upprall"	-7.09\pt	7.09\pt	-3.09\pt	3.09\pt	
+        "downprall"	"\\downprall"	-7.09\pt	7.09\pt	-3.09\pt	3.09\pt	
+        }
+    "flags"	 = \table {
+        "u3"	"\\eighthflag"	-0.28\pt	6.94\pt	-17.24\pt	0.28\pt	
+        "u4"	"\\sixteenthflag"	-0.28\pt	6.94\pt	-20.05\pt	0.28\pt	
+        "u5"	"\\thirtysecondflag"	-0.28\pt	6.94\pt	-24.27\pt	0.28\pt	
+        "u6"	"\\sixtyfourthflag"	-0.28\pt	6.94\pt	-29.90\pt	0.28\pt	
+        "d3"	"\\deighthflag"	-0.28\pt	7.68\pt	-0.28\pt	16.40\pt	
+        "d4"	"\\dsixteenthflag"	-0.28\pt	7.68\pt	-0.28\pt	17.24\pt	
+        "d5"	"\\dthirtysecondflag"	-0.28\pt	7.68\pt	-0.28\pt	22.02\pt	
+        "d6"	"\\dsixtyfourthflag"	-0.28\pt	7.68\pt	-0.28\pt	24.83\pt	
+        }
+    "clefs"	 = \table {
+        "alto"	"\\altoclef"	-5.62\pt	20.94\pt	-11.25\pt	11.25\pt	
+        "alto_change"	"\\caltoclef"	-4.50\pt	16.75\pt	-9.00\pt	9.00\pt	
+        "bass"	"\\bassclef"	-2.81\pt	20.25\pt	-14.06\pt	5.62\pt	
+        "bass_change"	"\\cbassclef"	-2.25\pt	16.20\pt	-11.25\pt	4.50\pt	
+        "violin"	"\\violinclef"	-4.90\pt	21.02\pt	-16.88\pt	28.12\pt	
+        "violin_change"	"\\cviolinclef"	-4.26\pt	16.48\pt	-13.50\pt	22.50\pt	
+        }
+    %  } % $name
diff --git a/init/feta26.ly b/init/feta26.ly
new file mode 100644
index 0000000000..77841219dc
--- /dev/null
+++ b/init/feta26.ly
@@ -0,0 +1,88 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta26.log
+% name=\symboltables {
+    "rests"	 = \table {
+        "0"	"\\wholerest"	0.00\pt	9.75\pt	-4.06\pt	0.00\pt	
+        "1"	"\\halfrest"	0.00\pt	9.75\pt	0.00\pt	4.06\pt	
+        "0o"	"\\outsidewholerest"	-4.06\pt	13.81\pt	-4.06\pt	0.65\pt	
+        "1o"	"\\outsidehalfrest"	-4.06\pt	13.81\pt	-0.65\pt	4.06\pt	
+        "2"	"\\quartrest"	0.00\pt	7.02\pt	4.88\pt	23.40\pt	
+        "3"	"\\eighthrest"	0.00\pt	8.67\pt	6.50\pt	18.47\pt	
+        "4"	"\\sixteenthrest"	0.00\pt	10.08\pt	0.00\pt	18.47\pt	
+        "5"	"\\thirtysecondrest"	0.00\pt	11.38\pt	0.00\pt	24.97\pt	
+        "6"	"\\sixtyfourthrest"	0.00\pt	12.20\pt	0.00\pt	31.47\pt	
+        "7"	"\\hundredtwentyeighthrest"	0.00\pt	13.58\pt	0.00\pt	37.97\pt	
+        }
+    "accidentals"	 = \table {
+        "1"	"\\sharp"	0.00\pt	7.15\pt	-9.75\pt	9.75\pt	
+        "0"	"\\natural"	0.00\pt	4.33\pt	-9.75\pt	9.75\pt	
+        "-1"	"\\flat"	-0.78\pt	5.20\pt	-3.25\pt	13.00\pt	
+        "-2"	"\\flatflat"	-0.78\pt	9.42\pt	-3.25\pt	13.00\pt	
+        "2"	"\\sharpsharp"	0.00\pt	6.50\pt	-3.25\pt	3.25\pt	
+        }
+    "dots"	 = \table {
+        "dot"	"\\dot"	0.00\pt	2.92\pt	-1.46\pt	1.46\pt	
+        "repeatcolon"	"\\repeatcolon"	0.00\pt	2.92\pt	-3.25\pt	3.25\pt	
+        }
+    "balls"	 = \table {
+        "-1"	"\\brevisball"	0.00\pt	13.00\pt	-3.58\pt	3.58\pt	
+        "-1l"	"\\brevisledger"	-3.25\pt	16.25\pt	-0.65\pt	0.65\pt	
+        "-2"	"\\longaball"	0.00\pt	13.00\pt	-3.58\pt	3.58\pt	
+        "-2l"	"\\longaledger"	-3.25\pt	16.25\pt	-0.65\pt	0.65\pt	
+        "0"	"\\wholeball"	0.00\pt	12.87\pt	-3.58\pt	3.58\pt	
+        "0l"	"\\wholeledger"	-3.22\pt	16.09\pt	-0.65\pt	0.65\pt	
+        "1"	"\\halfball"	0.00\pt	8.95\pt	-3.58\pt	3.58\pt	
+        "1l"	"\\halfledger"	-2.24\pt	11.19\pt	-0.65\pt	0.65\pt	
+        "2"	"\\quartball"	0.00\pt	8.59\pt	-3.58\pt	3.58\pt	
+        "2l"	"\\quartledger"	-2.15\pt	10.73\pt	-0.65\pt	0.65\pt	
+        }
+    "scripts"	 = \table {
+        "ufermata"	"\\ufermata"	-8.61\pt	8.61\pt	-0.49\pt	9.43\pt	
+        "dfermata"	"\\dfermata"	-8.61\pt	8.61\pt	-9.43\pt	0.49\pt	
+        "sforzato"	"\\sforzatoaccent"	-5.85\pt	5.85\pt	-3.25\pt	3.25\pt	
+        "staccato"	"\\staccato"	-0.98\pt	0.98\pt	-0.98\pt	0.98\pt	
+        "ustaccatissimo"	"\\ustaccatissimo"	-1.30\pt	1.30\pt	-0.20\pt	6.50\pt	
+        "dstaccatissimo"	"\\dstaccatissimo"	-1.30\pt	1.30\pt	-6.50\pt	0.20\pt	
+        "tenuto"	"\\tenuto"	-5.85\pt	5.85\pt	-0.39\pt	0.39\pt	
+        "umarcato"	"\\umarcato"	-3.25\pt	3.25\pt	0.00\pt	7.15\pt	
+        "dmarcato"	"\\dmarcato"	-3.25\pt	3.25\pt	-7.15\pt	0.00\pt	
+        "open"	"\\ouvert"	-2.60\pt	2.60\pt	-3.25\pt	3.25\pt	
+        "stopped"	"\\plusstop"	-3.58\pt	3.58\pt	-3.58\pt	3.58\pt	
+        "upbow"	"\\upbow"	-4.23\pt	4.23\pt	0.00\pt	13.52\pt	
+        "downbow"	"\\downbow"	-4.88\pt	4.88\pt	0.00\pt	8.67\pt	
+        "turn"	"\\turn"	-7.11\pt	7.11\pt	-3.44\pt	3.44\pt	
+        "trill"	"\\trill"	-6.50\pt	6.50\pt	0.00\pt	14.62\pt	
+        "upedalheel"	"\\upedalheel"	-3.25\pt	3.25\pt	-3.25\pt	4.33\pt	
+        "dpedalheel"	"\\dpedalheel"	-3.25\pt	3.25\pt	-4.33\pt	3.25\pt	
+        "upedaltoe"	"\\upedaltoe"	-3.25\pt	3.25\pt	0.00\pt	9.75\pt	
+        "dpedaltoe"	"\\dpedaltoe"	-3.25\pt	3.25\pt	-9.75\pt	0.00\pt	
+        "flageolet"	"\\flageolet"	-3.47\pt	3.47\pt	-3.47\pt	3.47\pt	
+        "trilelement"	"\\trilelement"	-3.25\pt	1.70\pt	-3.58\pt	3.58\pt	
+        "prall"	"\\prall"	-5.72\pt	5.72\pt	-3.58\pt	3.58\pt	
+        "mordent"	"\\mordent"	-5.72\pt	5.72\pt	-3.58\pt	3.58\pt	
+        "prallprall"	"\\prallprall"	-8.20\pt	8.20\pt	-3.58\pt	3.58\pt	
+        "prallmordent"	"\\prallmordent"	-8.20\pt	8.20\pt	-3.58\pt	3.58\pt	
+        "upprall"	"\\upprall"	-8.20\pt	8.20\pt	-3.58\pt	3.58\pt	
+        "downprall"	"\\downprall"	-8.20\pt	8.20\pt	-3.58\pt	3.58\pt	
+        }
+    "flags"	 = \table {
+        "u3"	"\\eighthflag"	-0.33\pt	8.02\pt	-19.92\pt	0.33\pt	
+        "u4"	"\\sixteenthflag"	-0.33\pt	8.02\pt	-23.17\pt	0.33\pt	
+        "u5"	"\\thirtysecondflag"	-0.33\pt	8.02\pt	-28.05\pt	0.33\pt	
+        "u6"	"\\sixtyfourthflag"	-0.33\pt	8.02\pt	-34.55\pt	0.33\pt	
+        "d3"	"\\deighthflag"	-0.33\pt	8.88\pt	-0.33\pt	18.95\pt	
+        "d4"	"\\dsixteenthflag"	-0.33\pt	8.88\pt	-0.33\pt	19.92\pt	
+        "d5"	"\\dthirtysecondflag"	-0.33\pt	8.88\pt	-0.33\pt	25.45\pt	
+        "d6"	"\\dsixtyfourthflag"	-0.33\pt	8.88\pt	-0.33\pt	28.70\pt	
+        }
+    "clefs"	 = \table {
+        "alto"	"\\altoclef"	-6.50\pt	24.19\pt	-13.00\pt	13.00\pt	
+        "alto_change"	"\\caltoclef"	-5.20\pt	19.36\pt	-10.40\pt	10.40\pt	
+        "bass"	"\\bassclef"	-3.25\pt	23.40\pt	-16.25\pt	6.50\pt	
+        "bass_change"	"\\cbassclef"	-2.60\pt	18.72\pt	-13.00\pt	5.20\pt	
+        "violin"	"\\violinclef"	-5.66\pt	24.29\pt	-19.50\pt	32.50\pt	
+        "violin_change"	"\\cviolinclef"	-4.92\pt	19.04\pt	-15.60\pt	26.00\pt	
+        }
+    %  } % $name
diff --git a/init/lily-init.ly b/init/lily-init.ly
index c609918c57..1fb4992c05 100644
--- a/init/lily-init.ly
+++ b/init/lily-init.ly
@@ -6,7 +6,7 @@ breve = \duration { -1 0 }
 longa = \duration { -2 0 }
 
 \include "dynamic.ly"
-\include "dutch.ly" 
+\include "nederlands.ly"		% dutch
 \include "script.ly"
 
 
diff --git a/init/simple-init.ly b/init/simple-init.ly
index 13c7ce38ba..9d878ca7bb 100644
--- a/init/simple-init.ly
+++ b/init/simple-init.ly
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
 Gourlay = 1.0
-\include "dutch.ly" 
+\include "nederlands.ly" 
 
 \include "paper16.ly"
 
diff --git a/input/Makefile.am b/input/Makefile.am
index 169a97dc68..1b6aa6bf03 100644
--- a/input/Makefile.am
+++ b/input/Makefile.am
@@ -3,7 +3,7 @@
 # Generated automatically by wild-perl 0.1
 # input/Makefile.am.wild
 
-LYFILES = beam-bug.ly beams.ly cadenza.ly collisions.ly coriolan-alto.ly denneboom.ly font-body.ly font.ly font11.ly font13.ly font16.ly font20.ly font26.ly gourlay.ly keys.ly kortjakje.ly multi.ly pedal.ly praeludium-fuga-E.ly rhythm.ly scales.ly scripts.ly sleur.ly slurs.ly spacing.ly stem.ly tril.ly twinkle-pop.ly twinkle.ly
+LYFILES = beam-bug.ly beams.ly cadenza.ly collisions.ly coriolan-alto.ly denneboom.ly font-body.ly font.ly font11.ly font13.ly font16.ly font20.ly font26.ly gourlay.ly keys.ly kortjakje.ly multi.ly pedal.ly praeludium-fuga-E.ly rhythm.ly scales.ly scripts.ly sleur.ly slurs.ly spacing.ly stem.ly test-lyrics.ly tril.ly twinkle-pop.ly twinkle.ly
 TEXFILES = dummy.tex
 M4FILES = dummy.m4
 EXTRA_DIST = Makefile.am.wild TODO $(LYFILES) $(TEXFILES) $(M4FILES)
@@ -13,4 +13,4 @@ OUTFILES = $(M4FILES:%.m4=%)
 default: all $(OUTFILES)
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/input/Makefile.in b/input/Makefile.in
index e5e3228abd..b250825e4c 100644
--- a/input/Makefile.in
+++ b/input/Makefile.in
@@ -99,7 +99,7 @@ YACC = @YACC@
 ZIP = @ZIP@
 absolute_builddir = @absolute_builddir@
 
-LYFILES = beam-bug.ly beams.ly cadenza.ly collisions.ly coriolan-alto.ly denneboom.ly font-body.ly font.ly font11.ly font13.ly font16.ly font20.ly font26.ly gourlay.ly keys.ly kortjakje.ly multi.ly pedal.ly praeludium-fuga-E.ly rhythm.ly scales.ly scripts.ly sleur.ly slurs.ly spacing.ly stem.ly tril.ly twinkle-pop.ly twinkle.ly
+LYFILES = beam-bug.ly beams.ly cadenza.ly collisions.ly coriolan-alto.ly denneboom.ly font-body.ly font.ly font11.ly font13.ly font16.ly font20.ly font26.ly gourlay.ly keys.ly kortjakje.ly multi.ly pedal.ly praeludium-fuga-E.ly rhythm.ly scales.ly scripts.ly sleur.ly slurs.ly spacing.ly stem.ly test-lyrics.ly tril.ly twinkle-pop.ly twinkle.ly
 TEXFILES = dummy.tex
 M4FILES = dummy.m4
 EXTRA_DIST = Makefile.am.wild TODO $(LYFILES) $(TEXFILES) $(M4FILES)
@@ -197,7 +197,7 @@ mostlyclean distclean maintainer-clean
 default: all $(OUTFILES)
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/input/test-lyrics.ly b/input/test-lyrics.ly
new file mode 100644
index 0000000000..7fb5d45daa
--- /dev/null
+++ b/input/test-lyrics.ly
@@ -0,0 +1,10 @@
+
+\score
+{
+	< \type Staff 
+		\melodic { \octave c'; c4 e4 g4 e4  c4 e4 g4 e4  c4 e4 g4 e4  c4 e4 g4 e4  }
+	\type Lyrics
+		\lyric { LLLLLLLLLooooongggggggg2 Syyyyyyyyyyyyylllllllaaaaaabbble2 LLLLLLLLLooooongggggggg2 Syyyyyyyyyyyyylllllllaaaaaabbble2 LLLLLLLLLooooongggggggg2 Syyyyyyyyyyyyylllllllaaaaaabbble2 }
+	>
+}
+	
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 527470b7dd..5554677441 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -21,5 +21,7 @@ MODULE_CXXFLAGS += -D_REENTRANT
 
 EXTRA_DIST = Makefile.am.wild
 
+distclean-local:
+	-rm -rf .deps
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/lib/Makefile.am.wild b/lib/Makefile.am.wild
index 1bd40b765f..3185791ed7 100644
--- a/lib/Makefile.am.wild
+++ b/lib/Makefile.am.wild
@@ -18,3 +18,5 @@ MODULE_CXXFLAGS += -D_REENTRANT
 
 EXTRA_DIST = Makefile.am.wild
 
+distclean-local:
+	-rm -rf .deps
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 76b5a65adf..e796b2ea38 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -507,7 +507,7 @@ mostlyclean:  mostlyclean-recursive mostlyclean-am
 
 clean:  clean-recursive clean-am
 
-distclean:  distclean-recursive distclean-am
+distclean:  distclean-recursive distclean-am distclean-local
 	-rm -f config.status
 	-rm -f libtool
 
@@ -534,8 +534,10 @@ maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
 MODULE_CXXFLAGS += -D_REENTRANT
 
+distclean-local:
+	-rm -rf .deps
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/lib/include/Makefile.am b/lib/include/Makefile.am
index caad0633b5..25185ebf6b 100644
--- a/lib/include/Makefile.am
+++ b/lib/include/Makefile.am
@@ -8,4 +8,4 @@ noinst_HEADERS = binary-source-file.hh duration-convert.hh duration.hh file-stor
 EXTRA_DIST = Makefile.am.wild
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/lib/include/Makefile.in b/lib/include/Makefile.in
index d265d91c2d..2efb0f8fc0 100644
--- a/lib/include/Makefile.in
+++ b/lib/include/Makefile.in
@@ -218,7 +218,7 @@ mostlyclean distclean maintainer-clean
 
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/lily/Makefile.am b/lily/Makefile.am
index b245e5a9c6..7262ac7da7 100644
--- a/lily/Makefile.am
+++ b/lily/Makefile.am
@@ -16,7 +16,7 @@ bin_PROGRAMS = lilypond
 # ignoring wildcards for `lexer.cc'
 # ignoring wildcards for `parser.cc'
  
-lilypond_SOURCES = abbrev.cc abbreviation-beam-engraver.cc abbreviation-beam.cc atom.cc audio-column.cc audio-element.cc audio-item.cc audio-staff.cc axis-group-administration.cc axis-group-element.cc axis-group-item.cc axis-group-spanner.cc axis.cc bar-column-grav.cc bar-column.cc bar-grav.cc bar-number-grav.cc bar.cc beam-grav.cc beam-swallow-trans.cc beam.cc bow.cc boxes.cc break-align-item.cc break.cc change-iterator.cc change-translator.cc chord-iterator.cc clef-grav.cc clef-item.cc col-info.cc colhpos.cc collision-grav.cc collision.cc command-request.cc crescendo.cc debug.cc dimen.cc directional-spanner.cc dot-column-grav.cc dot-column.cc dots.cc dynamic-grav.cc elem-group.cc engraver-group.cc engraver.cc general-script-def.cc global-translator.cc gourlay-breaking.cc graphical-element.cc grouping.cc head-grav.cc header.cc horizontal-align-item.cc horizontal-group-item.cc horizontal-vertical-group-item.cc idealspacing.cc identifier.cc ineq-constrained-qp.cc item.cc key-grav.cc key-item.cc key-performer.cc key.cc keyword.cc leastsquares.cc lexerinit.cc lily-version.cc line-group-grav.cc line-spacer.cc linear-programming.cc local-key-grav.cc local-key-item.cc lookup.cc lyric-grav.cc lyric-performer.cc main.cc meter-grav.cc meter-performer.cc meter.cc midi-def.cc midi-item.cc midi-stream.cc midi-walker.cc misc.cc molecule.cc music-iterator.cc music-list.cc music-output-def.cc music.cc musical-request.cc my-lily-lexer.cc my-lily-parser.cc note-column.cc note-head.cc note-performer.cc note.cc notename-table.cc offset.cc outputter.cc p-col.cc p-score.cc paper-def.cc performance.cc performer-group-performer.cc performer.cc pitch-squash-grav.cc plet-engraver.cc plet-spanner.cc plet-swallow-engraver.cc priority-halign-grav.cc property-iterator.cc ps-plet.cc qlp.cc qlpsolve.cc request-iterator.cc request.cc rest-collision-grav.cc rest-collision.cc rest-grav.cc rest.cc rhythmic-column-grav.cc rhythmic-head.cc score-bar.cc score-column.cc score-elem-info.cc score-elem.cc score-grav.cc score-performer.cc score-priority-grav.cc score.cc scoreline.cc scores.cc script-column.cc script-def.cc script-grav.cc script.cc slur-grav.cc slur.cc span-bar-grav.cc span-bar.cc span-score-bar-grav.cc span-score-bar.cc spanner.cc spring-spacer.cc staff-info.cc staff-performer.cc staff-side.cc staff-sym-grav.cc staff-sym.cc stem-grav.cc stem-info.cc stem.cc super-elem.cc swallow-grav.cc swallow-perf.cc symtable.cc template1.cc template2.cc template3.cc template4.cc template5.cc template6.cc template7.cc template8.cc tex-beam.cc tex-slur.cc tex-stream.cc tex.cc text-def.cc text-item.cc text-spanner.cc tie-grav.cc tie.cc time-description.cc timing-grav.cc timing-translator.cc translation-property.cc translator-ctors.cc translator-group.cc translator.cc type-swallow-trans.cc version.cc vertical-align-elem.cc vertical-align-grav.cc vertical-align-spanner.cc vertical-group-spanner.cc voice-iterator.cc warn.cc word-wrap.cc lexer.ll parser.yy
+lilypond_SOURCES = abbrev.cc abbreviation-beam-engraver.cc abbreviation-beam.cc atom.cc audio-column.cc audio-element.cc audio-item.cc audio-staff.cc axis-group-administration.cc axis-group-element.cc axis-group-item.cc axis-group-spanner.cc axis.cc bar-column-grav.cc bar-column.cc bar-grav.cc bar-number-grav.cc bar.cc beam-grav.cc beam-swallow-trans.cc beam.cc bow.cc boxes.cc break-align-item.cc break.cc change-iterator.cc change-translator.cc chord-iterator.cc clef-grav.cc clef-item.cc col-info.cc colhpos.cc collision-grav.cc collision.cc command-request.cc crescendo.cc debug.cc dimen.cc directional-spanner.cc dot-column-grav.cc dot-column.cc dots.cc dynamic-grav.cc engraver-group.cc engraver.cc general-script-def.cc global-translator.cc gourlay-breaking.cc graphical-element.cc grouping.cc head-grav.cc header.cc horizontal-align-item.cc horizontal-group-elem.cc horizontal-group-item.cc horizontal-vertical-group-elem.cc horizontal-vertical-group-item.cc idealspacing.cc identifier.cc ineq-constrained-qp.cc item.cc key-grav.cc key-item.cc key-performer.cc key.cc keyword.cc leastsquares.cc lexerinit.cc lily-version.cc line-group-grav.cc line-spacer.cc linear-programming.cc local-key-grav.cc local-key-item.cc lookup.cc lyric-grav.cc lyric-performer.cc main.cc meter-grav.cc meter-performer.cc meter.cc midi-def.cc midi-item.cc midi-stream.cc midi-walker.cc misc.cc molecule.cc music-iterator.cc music-list.cc music-output-def.cc music.cc musical-request.cc my-lily-lexer.cc my-lily-parser.cc note-column.cc note-head.cc note-performer.cc note.cc notename-table.cc offset.cc outputter.cc p-col.cc p-score.cc paper-def.cc performance.cc performer-group-performer.cc performer.cc pitch-squash-grav.cc plet-engraver.cc plet-spanner.cc plet-swallow-engraver.cc priority-halign-grav.cc property-iterator.cc ps-plet.cc qlp.cc qlpsolve.cc request-iterator.cc request.cc rest-collision-grav.cc rest-collision.cc rest-grav.cc rest.cc rhythmic-column-grav.cc rhythmic-head.cc rod.cc score-bar.cc score-column.cc score-elem-info.cc score-elem.cc score-grav.cc score-performer.cc score-priority-grav.cc score.cc scoreline.cc scores.cc script-column.cc script-def.cc script-grav.cc script.cc separating-group-spanner.cc separating-line-group-grav.cc single-malt-grouping-item.cc slur-grav.cc slur.cc span-bar-grav.cc span-bar.cc span-score-bar-grav.cc span-score-bar.cc spanner.cc spring-spacer.cc staff-info.cc staff-performer.cc staff-side.cc staff-sym-grav.cc staff-sym.cc stem-grav.cc stem-info.cc stem.cc super-elem.cc swallow-grav.cc swallow-perf.cc symtable.cc template1.cc template2.cc template3.cc template4.cc template5.cc template6.cc template7.cc template8.cc tex-beam.cc tex-slur.cc tex-stream.cc tex.cc text-def.cc text-item.cc text-spanner.cc tie-grav.cc tie.cc time-description.cc timing-grav.cc timing-translator.cc translation-property.cc translator-ctors.cc translator-group.cc translator.cc type-swallow-trans.cc version.cc vertical-align-elem.cc vertical-align-grav.cc vertical-align-spanner.cc vertical-group-elem.cc vertical-group-spanner.cc voice-iterator.cc warn.cc word-wrap.cc lexer.ll parser.yy
 noinst_HEADERS = parser.hh
 
 #lilypond_LDADD = -llily -lflower @LEXLIB@
@@ -24,9 +24,6 @@ lilypond_LDADD = $(top_builddir)/lib/liblily.la $(top_builddir)/flower/libflower
 
 lilypond_LDFLAGS = -L$(absolute_builddir)/lib/.libs -L$(absolute_builddir)/flower/.libs
 
-
- 
-
 INCLUDES =  -I$(srcdir)/include -I$(srcdir)/../lib/include -I$(srcdir)/../flower/include 
 
 EXTRA_DIST = Makefile.am.wild GNUmakefile Stable.make VERSION
@@ -51,5 +48,7 @@ all-am: Makefile $(PROGRAMS) wild-check
 # dummy target for non-GNU makes; is overridden in GNUmakefile
 wild-check:
 
+distclean-local:
+	-rm -rf .deps
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/lily/Makefile.am.wild b/lily/Makefile.am.wild
index b7584ca7bf..f5050d47d0 100644
--- a/lily/Makefile.am.wild
+++ b/lily/Makefile.am.wild
@@ -20,9 +20,6 @@ lilypond_LDADD = $(top_builddir)/lib/liblily.la $(top_builddir)/flower/libflower
 
 lilypond_LDFLAGS = -L$(absolute_builddir)/lib/.libs -L$(absolute_builddir)/flower/.libs
 
-
- 
-
 INCLUDES =  -I$(srcdir)/include -I$(srcdir)/../lib/include -I$(srcdir)/../flower/include 
 
 EXTRA_DIST = Makefile.am.wild GNUmakefile Stable.make VERSION
@@ -47,3 +44,5 @@ all-am: Makefile $(PROGRAMS) wild-check
 # dummy target for non-GNU makes; is overridden in GNUmakefile
 wild-check:
 
+distclean-local:
+	-rm -rf .deps
diff --git a/lily/Makefile.in b/lily/Makefile.in
index 7440c2f3e8..f847d9f7f3 100644
--- a/lily/Makefile.in
+++ b/lily/Makefile.in
@@ -112,7 +112,7 @@ bin_PROGRAMS = lilypond
 # ignoring wildcards for `lexer.cc'
 # ignoring wildcards for `parser.cc'
 
-lilypond_SOURCES = abbrev.cc abbreviation-beam-engraver.cc abbreviation-beam.cc atom.cc audio-column.cc audio-element.cc audio-item.cc audio-staff.cc axis-group-administration.cc axis-group-element.cc axis-group-item.cc axis-group-spanner.cc axis.cc bar-column-grav.cc bar-column.cc bar-grav.cc bar-number-grav.cc bar.cc beam-grav.cc beam-swallow-trans.cc beam.cc bow.cc boxes.cc break-align-item.cc break.cc change-iterator.cc change-translator.cc chord-iterator.cc clef-grav.cc clef-item.cc col-info.cc colhpos.cc collision-grav.cc collision.cc command-request.cc crescendo.cc debug.cc dimen.cc directional-spanner.cc dot-column-grav.cc dot-column.cc dots.cc dynamic-grav.cc elem-group.cc engraver-group.cc engraver.cc general-script-def.cc global-translator.cc gourlay-breaking.cc graphical-element.cc grouping.cc head-grav.cc header.cc horizontal-align-item.cc horizontal-group-item.cc horizontal-vertical-group-item.cc idealspacing.cc identifier.cc ineq-constrained-qp.cc item.cc key-grav.cc key-item.cc key-performer.cc key.cc keyword.cc leastsquares.cc lexerinit.cc lily-version.cc line-group-grav.cc line-spacer.cc linear-programming.cc local-key-grav.cc local-key-item.cc lookup.cc lyric-grav.cc lyric-performer.cc main.cc meter-grav.cc meter-performer.cc meter.cc midi-def.cc midi-item.cc midi-stream.cc midi-walker.cc misc.cc molecule.cc music-iterator.cc music-list.cc music-output-def.cc music.cc musical-request.cc my-lily-lexer.cc my-lily-parser.cc note-column.cc note-head.cc note-performer.cc note.cc notename-table.cc offset.cc outputter.cc p-col.cc p-score.cc paper-def.cc performance.cc performer-group-performer.cc performer.cc pitch-squash-grav.cc plet-engraver.cc plet-spanner.cc plet-swallow-engraver.cc priority-halign-grav.cc property-iterator.cc ps-plet.cc qlp.cc qlpsolve.cc request-iterator.cc request.cc rest-collision-grav.cc rest-collision.cc rest-grav.cc rest.cc rhythmic-column-grav.cc rhythmic-head.cc score-bar.cc score-column.cc score-elem-info.cc score-elem.cc score-grav.cc score-performer.cc score-priority-grav.cc score.cc scoreline.cc scores.cc script-column.cc script-def.cc script-grav.cc script.cc slur-grav.cc slur.cc span-bar-grav.cc span-bar.cc span-score-bar-grav.cc span-score-bar.cc spanner.cc spring-spacer.cc staff-info.cc staff-performer.cc staff-side.cc staff-sym-grav.cc staff-sym.cc stem-grav.cc stem-info.cc stem.cc super-elem.cc swallow-grav.cc swallow-perf.cc symtable.cc template1.cc template2.cc template3.cc template4.cc template5.cc template6.cc template7.cc template8.cc tex-beam.cc tex-slur.cc tex-stream.cc tex.cc text-def.cc text-item.cc text-spanner.cc tie-grav.cc tie.cc time-description.cc timing-grav.cc timing-translator.cc translation-property.cc translator-ctors.cc translator-group.cc translator.cc type-swallow-trans.cc version.cc vertical-align-elem.cc vertical-align-grav.cc vertical-align-spanner.cc vertical-group-spanner.cc voice-iterator.cc warn.cc word-wrap.cc lexer.ll parser.yy
+lilypond_SOURCES = abbrev.cc abbreviation-beam-engraver.cc abbreviation-beam.cc atom.cc audio-column.cc audio-element.cc audio-item.cc audio-staff.cc axis-group-administration.cc axis-group-element.cc axis-group-item.cc axis-group-spanner.cc axis.cc bar-column-grav.cc bar-column.cc bar-grav.cc bar-number-grav.cc bar.cc beam-grav.cc beam-swallow-trans.cc beam.cc bow.cc boxes.cc break-align-item.cc break.cc change-iterator.cc change-translator.cc chord-iterator.cc clef-grav.cc clef-item.cc col-info.cc colhpos.cc collision-grav.cc collision.cc command-request.cc crescendo.cc debug.cc dimen.cc directional-spanner.cc dot-column-grav.cc dot-column.cc dots.cc dynamic-grav.cc engraver-group.cc engraver.cc general-script-def.cc global-translator.cc gourlay-breaking.cc graphical-element.cc grouping.cc head-grav.cc header.cc horizontal-align-item.cc horizontal-group-elem.cc horizontal-group-item.cc horizontal-vertical-group-elem.cc horizontal-vertical-group-item.cc idealspacing.cc identifier.cc ineq-constrained-qp.cc item.cc key-grav.cc key-item.cc key-performer.cc key.cc keyword.cc leastsquares.cc lexerinit.cc lily-version.cc line-group-grav.cc line-spacer.cc linear-programming.cc local-key-grav.cc local-key-item.cc lookup.cc lyric-grav.cc lyric-performer.cc main.cc meter-grav.cc meter-performer.cc meter.cc midi-def.cc midi-item.cc midi-stream.cc midi-walker.cc misc.cc molecule.cc music-iterator.cc music-list.cc music-output-def.cc music.cc musical-request.cc my-lily-lexer.cc my-lily-parser.cc note-column.cc note-head.cc note-performer.cc note.cc notename-table.cc offset.cc outputter.cc p-col.cc p-score.cc paper-def.cc performance.cc performer-group-performer.cc performer.cc pitch-squash-grav.cc plet-engraver.cc plet-spanner.cc plet-swallow-engraver.cc priority-halign-grav.cc property-iterator.cc ps-plet.cc qlp.cc qlpsolve.cc request-iterator.cc request.cc rest-collision-grav.cc rest-collision.cc rest-grav.cc rest.cc rhythmic-column-grav.cc rhythmic-head.cc rod.cc score-bar.cc score-column.cc score-elem-info.cc score-elem.cc score-grav.cc score-performer.cc score-priority-grav.cc score.cc scoreline.cc scores.cc script-column.cc script-def.cc script-grav.cc script.cc separating-group-spanner.cc separating-line-group-grav.cc single-malt-grouping-item.cc slur-grav.cc slur.cc span-bar-grav.cc span-bar.cc span-score-bar-grav.cc span-score-bar.cc spanner.cc spring-spacer.cc staff-info.cc staff-performer.cc staff-side.cc staff-sym-grav.cc staff-sym.cc stem-grav.cc stem-info.cc stem.cc super-elem.cc swallow-grav.cc swallow-perf.cc symtable.cc template1.cc template2.cc template3.cc template4.cc template5.cc template6.cc template7.cc template8.cc tex-beam.cc tex-slur.cc tex-stream.cc tex.cc text-def.cc text-item.cc text-spanner.cc tie-grav.cc tie.cc time-description.cc timing-grav.cc timing-translator.cc translation-property.cc translator-ctors.cc translator-group.cc translator.cc type-swallow-trans.cc version.cc vertical-align-elem.cc vertical-align-grav.cc vertical-align-spanner.cc vertical-group-elem.cc vertical-group-spanner.cc voice-iterator.cc warn.cc word-wrap.cc lexer.ll parser.yy
 noinst_HEADERS = parser.hh
 
 #lilypond_LDADD = -llily -lflower @LEXLIB@
@@ -141,29 +141,31 @@ beam-swallow-trans.o beam.o bow.o boxes.o break-align-item.o break.o \
 change-iterator.o change-translator.o chord-iterator.o clef-grav.o \
 clef-item.o col-info.o colhpos.o collision-grav.o collision.o \
 command-request.o crescendo.o debug.o dimen.o directional-spanner.o \
-dot-column-grav.o dot-column.o dots.o dynamic-grav.o elem-group.o \
-engraver-group.o engraver.o general-script-def.o global-translator.o \
-gourlay-breaking.o graphical-element.o grouping.o head-grav.o header.o \
-horizontal-align-item.o horizontal-group-item.o \
-horizontal-vertical-group-item.o idealspacing.o identifier.o \
-ineq-constrained-qp.o item.o key-grav.o key-item.o key-performer.o \
-key.o keyword.o leastsquares.o lexerinit.o lily-version.o \
-line-group-grav.o line-spacer.o linear-programming.o local-key-grav.o \
-local-key-item.o lookup.o lyric-grav.o lyric-performer.o main.o \
-meter-grav.o meter-performer.o meter.o midi-def.o midi-item.o \
-midi-stream.o midi-walker.o misc.o molecule.o music-iterator.o \
-music-list.o music-output-def.o music.o musical-request.o \
-my-lily-lexer.o my-lily-parser.o note-column.o note-head.o \
-note-performer.o note.o notename-table.o offset.o outputter.o p-col.o \
-p-score.o paper-def.o performance.o performer-group-performer.o \
-performer.o pitch-squash-grav.o plet-engraver.o plet-spanner.o \
-plet-swallow-engraver.o priority-halign-grav.o property-iterator.o \
-ps-plet.o qlp.o qlpsolve.o request-iterator.o request.o \
-rest-collision-grav.o rest-collision.o rest-grav.o rest.o \
-rhythmic-column-grav.o rhythmic-head.o score-bar.o score-column.o \
-score-elem-info.o score-elem.o score-grav.o score-performer.o \
-score-priority-grav.o score.o scoreline.o scores.o script-column.o \
-script-def.o script-grav.o script.o slur-grav.o slur.o span-bar-grav.o \
+dot-column-grav.o dot-column.o dots.o dynamic-grav.o engraver-group.o \
+engraver.o general-script-def.o global-translator.o gourlay-breaking.o \
+graphical-element.o grouping.o head-grav.o header.o \
+horizontal-align-item.o horizontal-group-elem.o horizontal-group-item.o \
+horizontal-vertical-group-elem.o horizontal-vertical-group-item.o \
+idealspacing.o identifier.o ineq-constrained-qp.o item.o key-grav.o \
+key-item.o key-performer.o key.o keyword.o leastsquares.o lexerinit.o \
+lily-version.o line-group-grav.o line-spacer.o linear-programming.o \
+local-key-grav.o local-key-item.o lookup.o lyric-grav.o \
+lyric-performer.o main.o meter-grav.o meter-performer.o meter.o \
+midi-def.o midi-item.o midi-stream.o midi-walker.o misc.o molecule.o \
+music-iterator.o music-list.o music-output-def.o music.o \
+musical-request.o my-lily-lexer.o my-lily-parser.o note-column.o \
+note-head.o note-performer.o note.o notename-table.o offset.o \
+outputter.o p-col.o p-score.o paper-def.o performance.o \
+performer-group-performer.o performer.o pitch-squash-grav.o \
+plet-engraver.o plet-spanner.o plet-swallow-engraver.o \
+priority-halign-grav.o property-iterator.o ps-plet.o qlp.o qlpsolve.o \
+request-iterator.o request.o rest-collision-grav.o rest-collision.o \
+rest-grav.o rest.o rhythmic-column-grav.o rhythmic-head.o rod.o \
+score-bar.o score-column.o score-elem-info.o score-elem.o score-grav.o \
+score-performer.o score-priority-grav.o score.o scoreline.o scores.o \
+script-column.o script-def.o script-grav.o script.o \
+separating-group-spanner.o separating-line-group-grav.o \
+single-malt-grouping-item.o slur-grav.o slur.o span-bar-grav.o \
 span-bar.o span-score-bar-grav.o span-score-bar.o spanner.o \
 spring-spacer.o staff-info.o staff-performer.o staff-side.o \
 staff-sym-grav.o staff-sym.o stem-grav.o stem-info.o stem.o \
@@ -174,8 +176,8 @@ text-item.o text-spanner.o tie-grav.o tie.o time-description.o \
 timing-grav.o timing-translator.o translation-property.o \
 translator-ctors.o translator-group.o translator.o type-swallow-trans.o \
 version.o vertical-align-elem.o vertical-align-grav.o \
-vertical-align-spanner.o vertical-group-spanner.o voice-iterator.o \
-warn.o word-wrap.o lexer.o parser.o
+vertical-align-spanner.o vertical-group-elem.o vertical-group-spanner.o \
+voice-iterator.o warn.o word-wrap.o lexer.o parser.o
 lilypond_DEPENDENCIES =  $(top_builddir)/lib/liblily.la \
 $(top_builddir)/flower/libflower.la
 LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
@@ -389,7 +391,7 @@ abbrev.o: abbrev.cc include/abbrev.hh include/item.hh include/boxes.hh \
 	include/direction.hh include/debug.hh \
 	../flower/include/dstream.hh ../lib/include/warn.hh \
 	include/beam.hh include/directional-spanner.hh \
-	include/spanner.hh ../flower/include/plist.hh \
+	include/spanner.hh include/rod.hh ../flower/include/plist.hh \
 	../flower/include/list.hh ../flower/include/list.icc \
 	../flower/include/cursor.hh ../flower/include/link.hh \
 	../flower/include/link.icc ../flower/include/pcursor.hh \
@@ -429,9 +431,11 @@ abbreviation-beam-engraver.o: abbreviation-beam-engraver.cc \
 	../flower/include/iterate.hh ../flower/include/plist.icc \
 	include/abbreviation-beam.hh include/beam.hh \
 	include/directional-spanner.hh include/spanner.hh \
-	include/musical-request.hh include/misc.hh include/grouping.hh
+	include/rod.hh include/musical-request.hh include/misc.hh \
+	include/grouping.hh
 abbreviation-beam.o: abbreviation-beam.cc include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
@@ -443,7 +447,7 @@ abbreviation-beam.o: abbreviation-beam.cc include/p-col.hh \
 	../flower/include/fproto.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
 	include/direction.hh ../flower/include/plist.hh \
@@ -451,7 +455,7 @@ abbreviation-beam.o: abbreviation-beam.cc include/p-col.hh \
 	../flower/include/cursor.hh ../flower/include/link.hh \
 	../flower/include/link.icc ../flower/include/pcursor.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc include/dimen.hh \
+	../flower/include/plist.icc include/rod.hh include/dimen.hh \
 	include/abbreviation-beam.hh include/beam.hh \
 	include/directional-spanner.hh include/spanner.hh \
 	include/misc.hh ../lib/include/moment.hh \
@@ -579,12 +583,12 @@ axis-group-item.o: axis-group-item.cc include/axis-group-item.hh \
 	include/axis-group-administration.hh include/item.hh \
 	include/boxes.hh include/drul-array.hh include/direction.hh \
 	include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh ../flower/include/plist.hh \
+	include/horizontal-group-elem.hh ../flower/include/plist.hh \
 	../flower/include/list.hh ../flower/include/list.icc \
 	../flower/include/cursor.hh ../flower/include/link.hh \
 	../flower/include/link.icc ../flower/include/pcursor.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc
+	../flower/include/plist.icc include/rod.hh
 axis-group-spanner.o: axis-group-spanner.cc \
 	include/axis-group-spanner.hh include/spanner.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
@@ -599,16 +603,17 @@ axis-group-spanner.o: axis-group-spanner.cc \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	../flower/include/interval.hh include/drul-array.hh \
-	include/direction.hh include/axis-group-element.hh \
+	include/direction.hh include/rod.hh \
+	include/axis-group-element.hh \
 	include/axis-group-administration.hh include/item.hh \
 	include/boxes.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
-	include/axis-group-item.hh ../flower/include/plist.hh \
-	../flower/include/list.hh ../flower/include/list.icc \
-	../flower/include/cursor.hh ../flower/include/link.hh \
-	../flower/include/link.icc ../flower/include/pcursor.hh \
-	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-item.hh \
+	../flower/include/plist.hh ../flower/include/list.hh \
+	../flower/include/list.icc ../flower/include/cursor.hh \
+	../flower/include/link.hh ../flower/include/link.icc \
+	../flower/include/pcursor.hh ../flower/include/cursor.icc \
+	../flower/include/iterate.hh ../flower/include/plist.icc
 axis.o: axis.cc include/axes.hh ../flower/include/string.hh \
 	../flower/include/arithmetic-operator.hh \
 	../flower/include/fproto.hh ../flower/include/real.hh \
@@ -636,7 +641,9 @@ bar-column-grav.o: bar-column-grav.cc include/bar-column-grav.hh \
 	include/score-elem.hh ../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
 	include/axis-group-administration.hh include/item.hh \
-	include/boxes.hh include/drul-array.hh include/elem-group.hh \
+	include/boxes.hh include/drul-array.hh \
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/horizontal-group-elem.hh \
 	include/script.hh include/staff-side.hh include/bar.hh
 bar-column.o: bar-column.cc include/bar.hh include/item.hh \
 	include/boxes.hh ../flower/include/fproto.hh \
@@ -655,7 +662,9 @@ bar-column.o: bar-column.cc include/bar.hh include/item.hh \
 	include/script-column.hh \
 	include/horizontal-vertical-group-item.hh \
 	include/axis-group-item.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh include/elem-group.hh
+	include/axis-group-administration.hh \
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/horizontal-group-elem.hh
 bar-grav.o: bar-grav.cc include/bar-grav.hh include/engraver.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
 	../flower/include/fproto.hh ../flower/include/real.hh \
@@ -758,10 +767,10 @@ beam-grav.o: beam-grav.cc ../lib/include/duration-convert.hh \
 	../flower/include/pcursor.hh ../flower/include/cursor.icc \
 	../flower/include/iterate.hh ../flower/include/plist.icc \
 	include/beam.hh include/directional-spanner.hh \
-	include/spanner.hh include/musical-request.hh \
+	include/spanner.hh include/rod.hh include/musical-request.hh \
 	include/grouping.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
-	include/axis-group-element.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh
 beam-swallow-trans.o: beam-swallow-trans.cc \
 	include/type-swallow-trans.hh include/translator.hh \
@@ -781,8 +790,9 @@ beam-swallow-trans.o: beam-swallow-trans.cc \
 	../flower/include/interval.hh include/direction.hh \
 	../lib/include/duration.hh ../lib/include/plet.hh
 beam.o: beam.cc include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh include/score-elem.hh \
-	../flower/include/parray.hh ../flower/include/varray.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
+	include/score-elem.hh ../flower/include/parray.hh \
+	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh \
@@ -792,7 +802,7 @@ beam.o: beam.cc include/p-col.hh include/horizontal-group-item.hh \
 	../flower/include/fproto.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
 	include/direction.hh ../flower/include/plist.hh \
@@ -800,9 +810,9 @@ beam.o: beam.cc include/p-col.hh include/horizontal-group-item.hh \
 	../flower/include/cursor.hh ../flower/include/link.hh \
 	../flower/include/link.icc ../flower/include/pcursor.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc include/dimen.hh include/beam.hh \
-	include/directional-spanner.hh include/spanner.hh \
-	include/abbreviation-beam.hh include/misc.hh \
+	../flower/include/plist.icc include/rod.hh include/dimen.hh \
+	include/beam.hh include/directional-spanner.hh \
+	include/spanner.hh include/abbreviation-beam.hh include/misc.hh \
 	../lib/include/moment.hh ../flower/include/rational.hh \
 	../flower/include/scalar.hh include/grouping.hh \
 	include/minterval.hh include/debug.hh \
@@ -825,7 +835,7 @@ bow.o: bow.cc include/bow.hh include/directional-spanner.hh \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	../flower/include/interval.hh include/drul-array.hh \
-	include/direction.hh include/paper-def.hh \
+	include/direction.hh include/rod.hh include/paper-def.hh \
 	../lib/include/moment.hh ../flower/include/rational.hh \
 	include/music-output-def.hh ../flower/include/plist.hh \
 	../flower/include/list.hh ../flower/include/list.icc \
@@ -843,35 +853,35 @@ boxes.o: boxes.cc include/boxes.hh ../flower/include/fproto.hh \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/varray.hh
 break-align-item.o: break-align-item.cc include/break-align-item.hh \
-	include/horizontal-align-item.hh include/elem-group.hh \
-	include/score-elem.hh ../flower/include/parray.hh \
-	../flower/include/varray.hh \
-	../flower/include/virtual-methods.hh \
-	../flower/include/directed-graph.hh \
-	include/graphical-element.hh include/offset.hh \
-	../flower/include/real.hh include/axes.hh \
+	include/horizontal-align-item.hh include/item.hh \
+	include/boxes.hh ../flower/include/fproto.hh \
+	../flower/include/real.hh ../flower/include/interval.hh \
+	../flower/include/compare.hh include/offset.hh include/axes.hh \
 	../flower/include/string.hh \
 	../flower/include/arithmetic-operator.hh \
-	../flower/include/fproto.hh ../flower/include/string-handle.hh \
-	../flower/include/international.hh ../flower/include/compare.hh \
-	include/lily-proto.hh ../lib/include/proto.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh include/item.hh \
-	include/boxes.hh include/drul-array.hh include/direction.hh
+	../flower/include/string-handle.hh \
+	../flower/include/international.hh include/score-elem.hh \
+	../flower/include/parray.hh ../flower/include/varray.hh \
+	../flower/include/virtual-methods.hh \
+	../flower/include/directed-graph.hh \
+	include/graphical-element.hh include/lily-proto.hh \
+	../lib/include/proto.hh include/drul-array.hh \
+	include/direction.hh
 break.o: break.cc include/score-column.hh include/lily-proto.hh \
 	../lib/include/proto.hh ../flower/include/fproto.hh \
 	../flower/include/real.hh ../flower/include/varray.hh \
 	../lib/include/moment.hh ../flower/include/rational.hh \
 	../flower/include/compare.hh \
 	../flower/include/arithmetic-operator.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/virtual-methods.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
 	../flower/include/string.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
 	include/direction.hh ../flower/include/plist.hh \
@@ -879,14 +889,14 @@ break.o: break.cc include/score-column.hh include/lily-proto.hh \
 	../flower/include/cursor.hh ../flower/include/link.hh \
 	../flower/include/link.icc ../flower/include/pcursor.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc include/break.hh include/colhpos.hh \
-	include/paper-def.hh include/music-output-def.hh \
-	../flower/include/dictionary.hh ../flower/include/assoc.hh \
-	include/line-spacer.hh ../flower/include/vector.hh \
-	include/debug.hh ../flower/include/dstream.hh \
-	../lib/include/warn.hh include/scoreline.hh include/spanner.hh \
-	include/p-score.hh include/music-output.hh \
-	../flower/include/cpu-timer.hh
+	../flower/include/plist.icc include/rod.hh include/break.hh \
+	include/colhpos.hh include/paper-def.hh \
+	include/music-output-def.hh ../flower/include/dictionary.hh \
+	../flower/include/assoc.hh include/line-spacer.hh \
+	../flower/include/vector.hh include/debug.hh \
+	../flower/include/dstream.hh ../lib/include/warn.hh \
+	include/scoreline.hh include/spanner.hh include/p-score.hh \
+	include/music-output.hh ../flower/include/cpu-timer.hh
 change-iterator.o: change-iterator.cc include/change-iterator.hh \
 	include/music-iterator.hh include/lily-proto.hh \
 	../lib/include/proto.hh ../flower/include/fproto.hh \
@@ -995,7 +1005,8 @@ clef-item.o: clef-item.cc include/clef-item.hh include/item.hh \
 	include/score-elem-info.hh include/staff-info.hh \
 	include/translator.hh
 col-info.o: col-info.cc include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
@@ -1007,7 +1018,7 @@ col-info.o: col-info.cc include/p-col.hh \
 	../flower/include/fproto.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
 	include/direction.hh ../flower/include/plist.hh \
@@ -1015,9 +1026,10 @@ col-info.o: col-info.cc include/p-col.hh \
 	../flower/include/cursor.hh ../flower/include/link.hh \
 	../flower/include/link.icc ../flower/include/pcursor.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc include/col-info.hh \
-	../flower/include/pointer.hh include/debug.hh \
-	../flower/include/dstream.hh ../lib/include/warn.hh
+	../flower/include/plist.icc include/rod.hh include/col-info.hh \
+	../flower/include/pointer.hh ../flower/include/assoc.hh \
+	include/debug.hh ../flower/include/dstream.hh \
+	../lib/include/warn.hh
 colhpos.o: colhpos.cc include/colhpos.hh ../flower/include/varray.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
 	../flower/include/fproto.hh ../flower/include/real.hh \
@@ -1044,7 +1056,9 @@ collision-grav.o: collision-grav.cc include/note-column.hh \
 	include/direction.hh include/script-column.hh \
 	include/horizontal-vertical-group-item.hh \
 	include/axis-group-item.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh include/elem-group.hh \
+	include/axis-group-administration.hh \
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/horizontal-group-elem.hh \
 	include/collision-grav.hh include/engraver.hh \
 	include/request.hh ../lib/include/moment.hh \
 	../flower/include/rational.hh ../lib/include/input.hh \
@@ -1071,17 +1085,18 @@ collision.o: collision.cc include/debug.hh ../flower/include/dstream.hh \
 	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/item.hh \
 	include/boxes.hh include/drul-array.hh include/direction.hh \
-	include/elem-group.hh include/note-column.hh \
-	include/script-column.hh include/note-head.hh \
-	include/rhythmic-head.hh include/paper-def.hh \
-	../lib/include/moment.hh ../flower/include/rational.hh \
-	include/music-output-def.hh ../flower/include/plist.hh \
-	../flower/include/list.hh ../flower/include/list.icc \
-	../flower/include/cursor.hh ../flower/include/link.hh \
-	../flower/include/link.icc ../flower/include/pcursor.hh \
-	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc ../flower/include/dictionary.hh \
-	../flower/include/assoc.hh
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/horizontal-group-elem.hh \
+	include/note-column.hh include/script-column.hh \
+	include/note-head.hh include/rhythmic-head.hh \
+	include/paper-def.hh ../lib/include/moment.hh \
+	../flower/include/rational.hh include/music-output-def.hh \
+	../flower/include/plist.hh ../flower/include/list.hh \
+	../flower/include/list.icc ../flower/include/cursor.hh \
+	../flower/include/link.hh ../flower/include/link.icc \
+	../flower/include/pcursor.hh ../flower/include/cursor.icc \
+	../flower/include/iterate.hh ../flower/include/plist.icc \
+	../flower/include/dictionary.hh ../flower/include/assoc.hh
 command-request.o: command-request.cc include/command-request.hh \
 	include/request.hh ../flower/include/string.hh \
 	../flower/include/arithmetic-operator.hh \
@@ -1115,15 +1130,15 @@ crescendo.o: crescendo.cc include/molecule.hh include/lily-proto.hh \
 	../flower/include/virtual-methods.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/spanner.hh \
-	include/drul-array.hh include/lookup.hh include/atom.hh \
-	../flower/include/scalar.hh include/paper-def.hh \
-	../lib/include/moment.hh ../flower/include/rational.hh \
-	include/music-output-def.hh ../flower/include/dictionary.hh \
-	../flower/include/assoc.hh include/debug.hh \
-	../flower/include/dstream.hh ../lib/include/warn.hh \
-	include/score-column.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
-	include/axis-group-element.hh \
+	include/drul-array.hh include/rod.hh include/lookup.hh \
+	include/atom.hh ../flower/include/scalar.hh \
+	include/paper-def.hh ../lib/include/moment.hh \
+	../flower/include/rational.hh include/music-output-def.hh \
+	../flower/include/dictionary.hh ../flower/include/assoc.hh \
+	include/debug.hh ../flower/include/dstream.hh \
+	../lib/include/warn.hh include/score-column.hh include/p-col.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh
 debug.o: debug.cc include/debug.hh ../flower/include/dstream.hh \
@@ -1158,7 +1173,7 @@ directional-spanner.o: directional-spanner.cc \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	../flower/include/interval.hh include/drul-array.hh \
-	include/direction.hh
+	include/direction.hh include/rod.hh
 dot-column-grav.o: dot-column-grav.cc
 dot-column.o: dot-column.cc include/dots.hh include/item.hh \
 	include/boxes.hh ../flower/include/fproto.hh \
@@ -1174,8 +1189,8 @@ dot-column.o: dot-column.cc include/dots.hh include/item.hh \
 	include/graphical-element.hh include/lily-proto.hh \
 	../lib/include/proto.hh include/drul-array.hh \
 	include/direction.hh include/dot-column.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
-	include/axis-group-element.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/rhythmic-head.hh
 dots.o: dots.cc include/dots.hh include/item.hh include/boxes.hh \
@@ -1214,7 +1229,7 @@ dynamic-grav.o: dynamic-grav.cc include/debug.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
 	../flower/include/interval.hh include/direction.hh \
-	include/spanner.hh include/drul-array.hh \
+	include/spanner.hh include/drul-array.hh include/rod.hh \
 	include/dynamic-grav.hh include/engraver.hh include/request.hh \
 	../lib/include/moment.hh ../flower/include/rational.hh \
 	../lib/include/input.hh include/music.hh include/minterval.hh \
@@ -1232,11 +1247,13 @@ dynamic-grav.o: dynamic-grav.cc include/debug.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
 	../flower/include/plist.icc include/score-column.hh \
 	include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh include/axis-group-element.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/staff-sym.hh include/note-column.hh \
 	include/script-column.hh \
-	include/horizontal-vertical-group-item.hh
+	include/horizontal-vertical-group-item.hh \
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh
 elem-group.o: elem-group.cc include/elem-group.hh include/score-elem.hh \
 	../flower/include/parray.hh ../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
@@ -1344,23 +1361,23 @@ gourlay-breaking.o: gourlay-breaking.cc include/gourlay-breaking.hh \
 	../flower/include/pcursor.hh ../flower/include/cursor.icc \
 	../flower/include/iterate.hh ../flower/include/plist.icc \
 	include/col-info.hh ../flower/include/pointer.hh \
-	../lib/include/moment.hh ../flower/include/rational.hh \
+	../flower/include/assoc.hh ../lib/include/moment.hh \
+	../flower/include/rational.hh \
 	../flower/include/arithmetic-operator.hh include/debug.hh \
 	../flower/include/dstream.hh ../flower/include/string.hh \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../lib/include/warn.hh \
 	include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh include/score-elem.hh \
-	../flower/include/parray.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
+	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/virtual-methods.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
-	include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
-	include/direction.hh include/p-score.hh include/music-output.hh \
-	include/paper-def.hh include/music-output-def.hh \
-	../flower/include/dictionary.hh ../flower/include/assoc.hh
+	include/direction.hh include/rod.hh include/p-score.hh \
+	include/music-output.hh include/paper-def.hh \
+	include/music-output-def.hh ../flower/include/dictionary.hh
 graphical-element.o: graphical-element.cc include/graphical-element.hh \
 	include/offset.hh ../flower/include/real.hh include/axes.hh \
 	../flower/include/string.hh \
@@ -1423,7 +1440,23 @@ header.o: header.cc ../flower/include/string.hh \
 	../flower/include/varray.hh ../flower/include/dictionary.hh \
 	include/header.hh
 horizontal-align-item.o: horizontal-align-item.cc \
-	include/horizontal-align-item.hh include/elem-group.hh \
+	include/horizontal-align-item.hh include/item.hh \
+	include/boxes.hh ../flower/include/fproto.hh \
+	../flower/include/real.hh ../flower/include/interval.hh \
+	../flower/include/compare.hh include/offset.hh include/axes.hh \
+	../flower/include/string.hh \
+	../flower/include/arithmetic-operator.hh \
+	../flower/include/string-handle.hh \
+	../flower/include/international.hh include/score-elem.hh \
+	../flower/include/parray.hh ../flower/include/varray.hh \
+	../flower/include/virtual-methods.hh \
+	../flower/include/directed-graph.hh \
+	include/graphical-element.hh include/lily-proto.hh \
+	../lib/include/proto.hh include/drul-array.hh \
+	include/direction.hh include/debug.hh \
+	../flower/include/dstream.hh ../lib/include/warn.hh
+horizontal-group-elem.o: horizontal-group-elem.cc \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
@@ -1435,13 +1468,14 @@ horizontal-align-item.o: horizontal-align-item.cc \
 	../flower/include/fproto.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/item.hh \
 	include/boxes.hh include/drul-array.hh include/direction.hh \
 	include/debug.hh ../flower/include/dstream.hh \
 	../lib/include/warn.hh
 horizontal-group-item.o: horizontal-group-item.cc include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
@@ -1453,7 +1487,7 @@ horizontal-group-item.o: horizontal-group-item.cc include/p-col.hh \
 	../flower/include/fproto.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
 	include/direction.hh ../flower/include/plist.hh \
@@ -1461,7 +1495,27 @@ horizontal-group-item.o: horizontal-group-item.cc include/p-col.hh \
 	../flower/include/cursor.hh ../flower/include/link.hh \
 	../flower/include/link.icc ../flower/include/pcursor.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc
+	../flower/include/plist.icc include/rod.hh
+horizontal-vertical-group-elem.o: horizontal-vertical-group-elem.cc \
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/axis-group-element.hh \
+	include/score-elem.hh ../flower/include/parray.hh \
+	../flower/include/varray.hh \
+	../flower/include/virtual-methods.hh \
+	../flower/include/directed-graph.hh \
+	include/graphical-element.hh include/offset.hh \
+	../flower/include/real.hh include/axes.hh \
+	../flower/include/string.hh \
+	../flower/include/arithmetic-operator.hh \
+	../flower/include/fproto.hh ../flower/include/string-handle.hh \
+	../flower/include/international.hh ../flower/include/compare.hh \
+	include/lily-proto.hh ../lib/include/proto.hh \
+	../flower/include/interval.hh \
+	include/axis-group-administration.hh \
+	include/horizontal-group-elem.hh include/item.hh \
+	include/boxes.hh include/drul-array.hh include/direction.hh \
+	include/debug.hh ../flower/include/dstream.hh \
+	../lib/include/warn.hh
 horizontal-vertical-group-item.o: horizontal-vertical-group-item.cc \
 	include/horizontal-vertical-group-item.hh \
 	include/axis-group-item.hh include/axis-group-element.hh \
@@ -1479,19 +1533,22 @@ horizontal-vertical-group-item.o: horizontal-vertical-group-item.cc \
 	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/item.hh \
 	include/boxes.hh include/drul-array.hh include/direction.hh \
-	include/elem-group.hh include/p-col.hh \
-	include/horizontal-group-item.hh ../flower/include/plist.hh \
-	../flower/include/list.hh ../flower/include/list.icc \
-	../flower/include/cursor.hh ../flower/include/link.hh \
-	../flower/include/link.icc ../flower/include/pcursor.hh \
-	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/horizontal-group-elem.hh \
+	include/p-col.hh include/horizontal-group-item.hh \
+	../flower/include/plist.hh ../flower/include/list.hh \
+	../flower/include/list.icc ../flower/include/cursor.hh \
+	../flower/include/link.hh ../flower/include/link.icc \
+	../flower/include/pcursor.hh ../flower/include/cursor.icc \
+	../flower/include/iterate.hh ../flower/include/plist.icc \
+	include/rod.hh
 idealspacing.o: idealspacing.cc include/idealspacing.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
 	../flower/include/fproto.hh ../flower/include/real.hh \
 	include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh include/score-elem.hh \
-	../flower/include/parray.hh ../flower/include/varray.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
+	include/score-elem.hh ../flower/include/parray.hh \
+	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
@@ -1499,7 +1556,7 @@ idealspacing.o: idealspacing.cc include/idealspacing.hh \
 	../flower/include/arithmetic-operator.hh \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
 	include/direction.hh ../flower/include/plist.hh \
@@ -1507,7 +1564,7 @@ idealspacing.o: idealspacing.cc include/idealspacing.hh \
 	../flower/include/cursor.hh ../flower/include/link.hh \
 	../flower/include/link.icc ../flower/include/pcursor.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc include/p-score.hh \
+	../flower/include/plist.icc include/rod.hh include/p-score.hh \
 	include/colhpos.hh include/music-output.hh include/debug.hh \
 	../flower/include/dstream.hh ../lib/include/warn.hh
 identifier.o: identifier.cc include/midi-def.hh include/lily-proto.hh \
@@ -1570,10 +1627,10 @@ item.o: item.cc include/p-score.hh include/colhpos.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/drul-array.hh \
 	include/direction.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
-	include/axis-group-element.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
-	include/spanner.hh
+	include/rod.hh include/spanner.hh
 key-grav.o: key-grav.cc include/key-grav.hh include/engraver.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
 	../flower/include/fproto.hh ../flower/include/real.hh \
@@ -1706,12 +1763,14 @@ line-group-grav.o: line-group-grav.cc include/staff-sym.hh \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	../flower/include/interval.hh include/drul-array.hh \
-	include/direction.hh include/vertical-group-spanner.hh \
-	include/axis-group-spanner.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh include/elem-group.hh \
-	include/command-request.hh include/request.hh \
-	../lib/include/moment.hh ../flower/include/rational.hh \
-	../lib/include/input.hh include/music.hh include/minterval.hh \
+	include/direction.hh include/rod.hh \
+	include/vertical-group-spanner.hh include/axis-group-spanner.hh \
+	include/axis-group-element.hh \
+	include/axis-group-administration.hh \
+	include/vertical-group-elem.hh include/command-request.hh \
+	include/request.hh ../lib/include/moment.hh \
+	../flower/include/rational.hh ../lib/include/input.hh \
+	include/music.hh include/minterval.hh \
 	../lib/include/duration.hh ../lib/include/plet.hh \
 	include/bar.hh include/item.hh include/boxes.hh \
 	include/debug.hh ../flower/include/dstream.hh \
@@ -1720,7 +1779,8 @@ line-group-grav.o: line-group-grav.cc include/staff-sym.hh \
 	../flower/include/scalar.hh include/staff-info.hh \
 	include/translator.hh ../flower/include/dictionary.hh \
 	../flower/include/assoc.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/axis-group-item.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-item.hh \
 	../flower/include/plist.hh ../flower/include/list.hh \
 	../flower/include/list.icc ../flower/include/cursor.hh \
 	../flower/include/link.hh ../flower/include/link.icc \
@@ -1758,7 +1818,7 @@ local-key-grav.o: local-key-grav.cc include/musical-request.hh \
 	../flower/include/dstream.hh ../lib/include/warn.hh \
 	include/key-item.hh include/tie.hh include/bow.hh \
 	include/directional-spanner.hh include/spanner.hh \
-	include/note-head.hh include/rhythmic-head.hh \
+	include/rod.hh include/note-head.hh include/rhythmic-head.hh \
 	include/time-description.hh
 local-key-item.o: local-key-item.cc include/dimen.hh \
 	../flower/include/real.hh ../flower/include/string.hh \
@@ -2209,7 +2269,8 @@ my-lily-parser.o: my-lily-parser.cc include/my-lily-parser.hh \
 	include/command-request.hh parser.hh include/header.hh \
 	../flower/include/dictionary.hh ../flower/include/assoc.hh
 note-column.o: note-column.cc include/dot-column.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
@@ -2221,12 +2282,14 @@ note-column.o: note-column.cc include/dot-column.hh \
 	../flower/include/fproto.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
 	include/direction.hh include/note-column.hh \
 	include/script-column.hh \
-	include/horizontal-vertical-group-item.hh include/script.hh \
+	include/horizontal-vertical-group-item.hh \
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/script.hh \
 	include/staff-side.hh include/note-head.hh \
 	include/rhythmic-head.hh include/stem.hh \
 	../lib/include/moment.hh ../flower/include/rational.hh \
@@ -2346,8 +2409,9 @@ outputter.o: outputter.cc include/outputter.hh include/lily-proto.hh \
 	include/direction.hh ../flower/include/varray.hh \
 	include/dimen.hh include/tex.hh ../flower/include/scalar.hh
 p-col.o: p-col.cc include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh include/score-elem.hh \
-	../flower/include/parray.hh ../flower/include/varray.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
+	include/score-elem.hh ../flower/include/parray.hh \
+	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh \
@@ -2357,7 +2421,7 @@ p-col.o: p-col.cc include/p-col.hh include/horizontal-group-item.hh \
 	../flower/include/fproto.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
 	include/direction.hh ../flower/include/plist.hh \
@@ -2365,7 +2429,7 @@ p-col.o: p-col.cc include/p-col.hh include/horizontal-group-item.hh \
 	../flower/include/cursor.hh ../flower/include/link.hh \
 	../flower/include/link.icc ../flower/include/pcursor.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc include/p-score.hh \
+	../flower/include/plist.icc include/rod.hh include/p-score.hh \
 	include/colhpos.hh include/music-output.hh include/debug.hh \
 	../flower/include/dstream.hh ../lib/include/warn.hh
 p-score.o: p-score.cc include/main.hh include/lily-proto.hh \
@@ -2384,24 +2448,24 @@ p-score.o: p-score.cc include/main.hh include/lily-proto.hh \
 	../flower/include/dstream.hh ../lib/include/warn.hh \
 	include/lookup.hh include/atom.hh include/boxes.hh \
 	../flower/include/scalar.hh include/direction.hh \
-	include/spanner.hh include/drul-array.hh include/paper-def.hh \
-	../lib/include/moment.hh ../flower/include/rational.hh \
-	include/music-output-def.hh ../flower/include/plist.hh \
-	../flower/include/list.hh ../flower/include/list.icc \
-	../flower/include/cursor.hh ../flower/include/link.hh \
-	../flower/include/link.icc ../flower/include/pcursor.hh \
-	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc ../flower/include/dictionary.hh \
-	../flower/include/assoc.hh include/scoreline.hh \
-	include/colhpos.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
-	include/axis-group-element.hh \
+	include/spanner.hh include/drul-array.hh include/rod.hh \
+	include/paper-def.hh ../lib/include/moment.hh \
+	../flower/include/rational.hh include/music-output-def.hh \
+	../flower/include/plist.hh ../flower/include/list.hh \
+	../flower/include/list.icc ../flower/include/cursor.hh \
+	../flower/include/link.hh ../flower/include/link.icc \
+	../flower/include/pcursor.hh ../flower/include/cursor.icc \
+	../flower/include/iterate.hh ../flower/include/plist.icc \
+	../flower/include/dictionary.hh ../flower/include/assoc.hh \
+	include/scoreline.hh include/colhpos.hh include/p-col.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/p-score.hh include/music-output.hh \
 	include/tex-stream.hh include/header.hh include/word-wrap.hh \
 	include/break.hh include/gourlay-breaking.hh \
-	include/outputter.hh ../flower/include/plist.tcc \
-	../flower/include/pcursor.tcc
+	include/outputter.hh ../flower/include/list.tcc \
+	../flower/include/cursor.tcc
 paper-def.o: paper-def.cc ../flower/include/string.hh \
 	../flower/include/arithmetic-operator.hh \
 	../flower/include/fproto.hh ../flower/include/real.hh \
@@ -2576,15 +2640,16 @@ plet-engraver.o: plet-engraver.cc ../lib/include/proto.hh \
 	include/directional-spanner.hh include/spanner.hh \
 	include/score-elem.hh ../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
-	include/text-def.hh include/general-script-def.hh \
-	include/beam.hh ../flower/include/plist.hh \
-	../flower/include/list.hh ../flower/include/list.icc \
-	../flower/include/cursor.hh ../flower/include/link.hh \
-	../flower/include/link.icc ../flower/include/pcursor.hh \
-	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc include/score-column.hh \
-	include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh include/axis-group-element.hh \
+	include/rod.hh include/text-def.hh \
+	include/general-script-def.hh include/beam.hh \
+	../flower/include/plist.hh ../flower/include/list.hh \
+	../flower/include/list.icc ../flower/include/cursor.hh \
+	../flower/include/link.hh ../flower/include/link.icc \
+	../flower/include/pcursor.hh ../flower/include/cursor.icc \
+	../flower/include/iterate.hh ../flower/include/plist.icc \
+	include/score-column.hh include/p-col.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/stem.hh \
 	include/molecule.hh
@@ -2606,18 +2671,20 @@ plet-spanner.o: plet-spanner.cc include/atom.hh \
 	../flower/include/pcursor.hh ../flower/include/cursor.icc \
 	../flower/include/iterate.hh ../flower/include/plist.icc \
 	include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh include/score-elem.hh \
-	../flower/include/parray.hh ../flower/include/varray.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
+	include/score-elem.hh ../flower/include/parray.hh \
+	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
 	../flower/include/directed-graph.hh \
-	include/graphical-element.hh include/axis-group-element.hh \
+	include/graphical-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
-	include/item.hh include/drul-array.hh include/paper-def.hh \
-	../lib/include/moment.hh ../flower/include/rational.hh \
-	include/music-output-def.hh ../flower/include/dictionary.hh \
-	../flower/include/assoc.hh include/plet-spanner.hh \
-	include/bow.hh include/directional-spanner.hh \
-	include/spanner.hh include/stem.hh include/text-def.hh \
+	include/item.hh include/drul-array.hh include/rod.hh \
+	include/paper-def.hh ../lib/include/moment.hh \
+	../flower/include/rational.hh include/music-output-def.hh \
+	../flower/include/dictionary.hh ../flower/include/assoc.hh \
+	include/plet-spanner.hh include/bow.hh \
+	include/directional-spanner.hh include/spanner.hh \
+	include/stem.hh include/text-def.hh \
 	include/general-script-def.hh ../lib/include/input.hh
 plet-swallow-engraver.o: plet-swallow-engraver.cc \
 	include/musical-request.hh include/lily-proto.hh \
@@ -2652,9 +2719,7 @@ priority-halign-grav.o: priority-halign-grav.cc include/bar.hh \
 	include/graphical-element.hh include/lily-proto.hh \
 	../lib/include/proto.hh include/drul-array.hh \
 	include/direction.hh include/break-align-item.hh \
-	include/horizontal-align-item.hh include/elem-group.hh \
-	include/axis-group-element.hh \
-	include/axis-group-administration.hh \
+	include/horizontal-align-item.hh \
 	include/priority-halign-grav.hh include/engraver.hh \
 	include/request.hh ../lib/include/moment.hh \
 	../flower/include/rational.hh ../lib/include/input.hh \
@@ -2789,7 +2854,9 @@ rest-collision-grav.o: rest-collision-grav.cc include/debug.hh \
 	../flower/include/dictionary.hh ../flower/include/assoc.hh \
 	include/collision.hh include/horizontal-vertical-group-item.hh \
 	include/axis-group-item.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh include/elem-group.hh \
+	include/axis-group-administration.hh \
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/horizontal-group-elem.hh \
 	include/note-column.hh include/script-column.hh
 rest-collision.o: rest-collision.cc include/debug.hh \
 	../flower/include/dstream.hh ../flower/include/string.hh \
@@ -2809,7 +2876,9 @@ rest-collision.o: rest-collision.cc include/debug.hh \
 	include/script-column.hh \
 	include/horizontal-vertical-group-item.hh \
 	include/axis-group-item.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh include/elem-group.hh \
+	include/axis-group-administration.hh \
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/horizontal-group-elem.hh \
 	include/stem.hh ../lib/include/moment.hh \
 	../flower/include/rational.hh include/molecule.hh \
 	../flower/include/plist.hh ../flower/include/list.hh \
@@ -2899,7 +2968,9 @@ rhythmic-column-grav.o: rhythmic-column-grav.cc \
 	include/script-column.hh \
 	include/horizontal-vertical-group-item.hh \
 	include/axis-group-item.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh include/elem-group.hh \
+	include/axis-group-administration.hh \
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/horizontal-group-elem.hh \
 	include/script.hh include/staff-side.hh include/dot-column.hh \
 	include/horizontal-group-item.hh
 rhythmic-head.o: rhythmic-head.cc include/rhythmic-head.hh \
@@ -2930,6 +3001,30 @@ rhythmic-head.o: rhythmic-head.cc include/rhythmic-head.hh \
 	include/axis-group-element.hh \
 	include/axis-group-administration.hh include/p-score.hh \
 	include/colhpos.hh include/music-output.hh
+rod.o: rod.cc include/rod.hh include/lily-proto.hh \
+	../lib/include/proto.hh ../flower/include/fproto.hh \
+	../flower/include/real.hh include/direction.hh \
+	include/drul-array.hh include/p-col.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
+	include/score-elem.hh ../flower/include/parray.hh \
+	../flower/include/varray.hh \
+	../flower/include/virtual-methods.hh \
+	../flower/include/directed-graph.hh \
+	include/graphical-element.hh include/offset.hh include/axes.hh \
+	../flower/include/string.hh \
+	../flower/include/arithmetic-operator.hh \
+	../flower/include/string-handle.hh \
+	../flower/include/international.hh ../flower/include/compare.hh \
+	../flower/include/interval.hh \
+	include/axis-group-administration.hh include/axis-group-item.hh \
+	include/item.hh include/boxes.hh ../flower/include/plist.hh \
+	../flower/include/list.hh ../flower/include/list.icc \
+	../flower/include/cursor.hh ../flower/include/link.hh \
+	../flower/include/link.icc ../flower/include/pcursor.hh \
+	../flower/include/cursor.icc ../flower/include/iterate.hh \
+	../flower/include/plist.icc include/debug.hh \
+	../flower/include/dstream.hh ../lib/include/warn.hh
 score-bar.o: score-bar.cc include/score-bar.hh include/bar.hh \
 	include/item.hh include/boxes.hh ../flower/include/fproto.hh \
 	../flower/include/real.hh ../flower/include/interval.hh \
@@ -2952,13 +3047,14 @@ score-column.o: score-column.cc include/debug.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
 	../lib/include/warn.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
 	include/direction.hh ../flower/include/plist.hh \
@@ -2966,8 +3062,9 @@ score-column.o: score-column.cc include/debug.hh \
 	../flower/include/cursor.hh ../flower/include/link.hh \
 	../flower/include/link.icc ../flower/include/pcursor.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc include/score-column.hh \
-	../lib/include/moment.hh ../flower/include/rational.hh
+	../flower/include/plist.icc include/rod.hh \
+	include/score-column.hh ../lib/include/moment.hh \
+	../flower/include/rational.hh
 score-elem-info.o: score-elem-info.cc include/score-elem-info.hh \
 	../flower/include/scalar.hh ../flower/include/string.hh \
 	../flower/include/arithmetic-operator.hh \
@@ -3005,9 +3102,10 @@ score-elem.o: score-elem.cc include/outputter.hh include/lily-proto.hh \
 	include/graphical-element.hh include/debug.hh \
 	../flower/include/dstream.hh ../lib/include/warn.hh \
 	include/tex.hh include/dimen.hh include/spanner.hh \
-	include/drul-array.hh include/scoreline.hh include/item.hh \
-	include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh include/axis-group-element.hh \
+	include/drul-array.hh include/rod.hh include/scoreline.hh \
+	include/item.hh include/p-col.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh
 score-grav.o: score-grav.cc include/super-elem.hh include/score-elem.hh \
 	../flower/include/parray.hh ../flower/include/varray.hh \
@@ -3022,7 +3120,7 @@ score-grav.o: score-grav.cc include/super-elem.hh include/score-elem.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
 	../flower/include/interval.hh include/scoreline.hh \
 	include/colhpos.hh include/spanner.hh include/drul-array.hh \
-	include/direction.hh include/debug.hh \
+	include/direction.hh include/rod.hh include/debug.hh \
 	../flower/include/dstream.hh ../lib/include/warn.hh \
 	include/item.hh include/boxes.hh include/score-grav.hh \
 	include/engraver-group.hh ../flower/include/plist.hh \
@@ -3041,8 +3139,8 @@ score-grav.o: score-grav.cc include/super-elem.hh include/score-elem.hh \
 	include/p-score.hh include/music-output.hh \
 	include/musical-request.hh ../lib/include/duration.hh \
 	../lib/include/plet.hh include/score-column.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
-	include/axis-group-element.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/command-request.hh include/paper-def.hh \
 	include/music-output-def.hh
@@ -3079,7 +3177,8 @@ score-performer.o: score-performer.cc include/score-performer.hh \
 	../lib/include/source-file.hh ../lib/include/source.hh \
 	include/audio-staff.hh
 score-priority-grav.o: score-priority-grav.cc \
-	include/horizontal-group-item.hh include/elem-group.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
@@ -3091,7 +3190,7 @@ score-priority-grav.o: score-priority-grav.cc \
 	../flower/include/fproto.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
 	include/direction.hh include/score-priority-grav.hh \
@@ -3142,17 +3241,18 @@ scoreline.o: scoreline.cc include/scoreline.hh include/colhpos.hh \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	../flower/include/interval.hh include/drul-array.hh \
-	include/direction.hh include/dimen.hh include/atom.hh \
-	include/boxes.hh include/paper-def.hh ../lib/include/moment.hh \
-	../flower/include/rational.hh include/music-output-def.hh \
-	../flower/include/plist.hh ../flower/include/list.hh \
-	../flower/include/list.icc ../flower/include/cursor.hh \
-	../flower/include/link.hh ../flower/include/link.icc \
-	../flower/include/pcursor.hh ../flower/include/cursor.icc \
-	../flower/include/iterate.hh ../flower/include/plist.icc \
-	../flower/include/dictionary.hh ../flower/include/assoc.hh \
-	include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh include/axis-group-element.hh \
+	include/direction.hh include/rod.hh include/dimen.hh \
+	include/atom.hh include/boxes.hh include/paper-def.hh \
+	../lib/include/moment.hh ../flower/include/rational.hh \
+	include/music-output-def.hh ../flower/include/plist.hh \
+	../flower/include/list.hh ../flower/include/list.icc \
+	../flower/include/cursor.hh ../flower/include/link.hh \
+	../flower/include/link.icc ../flower/include/pcursor.hh \
+	../flower/include/cursor.icc ../flower/include/iterate.hh \
+	../flower/include/plist.icc ../flower/include/dictionary.hh \
+	../flower/include/assoc.hh include/p-col.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/p-score.hh include/music-output.hh
 scores.o: scores.cc include/main.hh include/lily-proto.hh \
@@ -3192,10 +3292,11 @@ script-column.o: script-column.cc include/script-column.hh \
 	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/item.hh \
 	include/boxes.hh include/drul-array.hh include/direction.hh \
-	include/elem-group.hh include/debug.hh \
-	../flower/include/dstream.hh ../lib/include/warn.hh \
-	include/script.hh include/staff-side.hh include/note-head.hh \
-	include/rhythmic-head.hh include/stem.hh \
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/horizontal-group-elem.hh \
+	include/debug.hh ../flower/include/dstream.hh \
+	../lib/include/warn.hh include/script.hh include/staff-side.hh \
+	include/note-head.hh include/rhythmic-head.hh include/stem.hh \
 	../lib/include/moment.hh ../flower/include/rational.hh \
 	include/molecule.hh ../flower/include/plist.hh \
 	../flower/include/list.hh ../flower/include/list.icc \
@@ -3251,7 +3352,7 @@ script-grav.o: script-grav.cc include/script-grav.hh include/engraver.hh \
 	../flower/include/link.hh ../flower/include/link.icc \
 	../flower/include/pcursor.hh ../flower/include/cursor.icc \
 	../flower/include/iterate.hh ../flower/include/plist.icc \
-	include/staff-sym.hh include/spanner.hh \
+	include/staff-sym.hh include/spanner.hh include/rod.hh \
 	include/general-script-def.hh
 script.o: script.cc include/script-def.hh ../flower/include/string.hh \
 	../flower/include/arithmetic-operator.hh \
@@ -3279,6 +3380,86 @@ script.o: script.cc include/script-def.hh ../flower/include/string.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
 	include/stem.hh include/molecule.hh include/lookup.hh \
 	include/atom.hh ../flower/include/scalar.hh
+separating-group-spanner.o: separating-group-spanner.cc \
+	include/separating-group-spanner.hh \
+	include/vertical-group-spanner.hh include/axis-group-spanner.hh \
+	include/spanner.hh include/lily-proto.hh \
+	../lib/include/proto.hh ../flower/include/fproto.hh \
+	../flower/include/real.hh include/score-elem.hh \
+	../flower/include/parray.hh ../flower/include/varray.hh \
+	../flower/include/virtual-methods.hh \
+	../flower/include/directed-graph.hh \
+	include/graphical-element.hh include/offset.hh include/axes.hh \
+	../flower/include/string.hh \
+	../flower/include/arithmetic-operator.hh \
+	../flower/include/string-handle.hh \
+	../flower/include/international.hh ../flower/include/compare.hh \
+	../flower/include/interval.hh include/drul-array.hh \
+	include/direction.hh include/rod.hh \
+	include/axis-group-element.hh \
+	include/axis-group-administration.hh \
+	include/vertical-group-elem.hh \
+	include/single-malt-grouping-item.hh include/item.hh \
+	include/boxes.hh
+separating-line-group-grav.o: separating-line-group-grav.cc \
+	include/separating-line-group-grav.hh \
+	include/line-group-grav.hh include/engraver.hh \
+	include/lily-proto.hh ../lib/include/proto.hh \
+	../flower/include/fproto.hh ../flower/include/real.hh \
+	../flower/include/varray.hh include/request.hh \
+	../flower/include/string.hh \
+	../flower/include/arithmetic-operator.hh \
+	../flower/include/string-handle.hh \
+	../flower/include/international.hh ../flower/include/compare.hh \
+	../lib/include/moment.hh ../flower/include/rational.hh \
+	../flower/include/virtual-methods.hh ../lib/include/input.hh \
+	include/music.hh include/minterval.hh \
+	../flower/include/interval.hh include/direction.hh \
+	include/score-elem-info.hh ../flower/include/scalar.hh \
+	include/staff-info.hh include/translator.hh \
+	../flower/include/dictionary.hh ../flower/include/assoc.hh \
+	../flower/include/parray.hh include/separating-group-spanner.hh \
+	include/vertical-group-spanner.hh include/axis-group-spanner.hh \
+	include/spanner.hh include/score-elem.hh \
+	../flower/include/directed-graph.hh \
+	include/graphical-element.hh include/offset.hh include/axes.hh \
+	include/drul-array.hh include/rod.hh \
+	include/axis-group-element.hh \
+	include/axis-group-administration.hh \
+	include/vertical-group-elem.hh \
+	include/single-malt-grouping-item.hh include/item.hh \
+	include/boxes.hh include/p-col.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-item.hh \
+	../flower/include/plist.hh ../flower/include/list.hh \
+	../flower/include/list.icc ../flower/include/cursor.hh \
+	../flower/include/link.hh ../flower/include/link.icc \
+	../flower/include/pcursor.hh ../flower/include/cursor.icc \
+	../flower/include/iterate.hh ../flower/include/plist.icc
+single-malt-grouping-item.o: single-malt-grouping-item.cc \
+	include/single-malt-grouping-item.hh include/item.hh \
+	include/boxes.hh ../flower/include/fproto.hh \
+	../flower/include/real.hh ../flower/include/interval.hh \
+	../flower/include/compare.hh include/offset.hh include/axes.hh \
+	../flower/include/string.hh \
+	../flower/include/arithmetic-operator.hh \
+	../flower/include/string-handle.hh \
+	../flower/include/international.hh include/score-elem.hh \
+	../flower/include/parray.hh ../flower/include/varray.hh \
+	../flower/include/virtual-methods.hh \
+	../flower/include/directed-graph.hh \
+	include/graphical-element.hh include/lily-proto.hh \
+	../lib/include/proto.hh include/drul-array.hh \
+	include/direction.hh include/p-col.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
+	include/axis-group-administration.hh include/axis-group-item.hh \
+	../flower/include/plist.hh ../flower/include/list.hh \
+	../flower/include/list.icc ../flower/include/cursor.hh \
+	../flower/include/link.hh ../flower/include/link.icc \
+	../flower/include/pcursor.hh ../flower/include/cursor.icc \
+	../flower/include/iterate.hh ../flower/include/plist.icc \
+	include/rod.hh
 slur-grav.o: slur-grav.cc ../lib/include/proto.hh \
 	../flower/include/fproto.hh ../flower/include/real.hh \
 	../flower/include/plist.hh ../flower/include/list.hh \
@@ -3306,13 +3487,15 @@ slur-grav.o: slur-grav.cc ../lib/include/proto.hh \
 	include/spanner.hh include/score-elem.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
-	include/drul-array.hh include/bow.hh include/debug.hh \
-	../flower/include/dstream.hh ../lib/include/warn.hh \
-	include/note-column.hh include/item.hh include/boxes.hh \
-	include/script-column.hh \
+	include/drul-array.hh include/rod.hh include/bow.hh \
+	include/debug.hh ../flower/include/dstream.hh \
+	../lib/include/warn.hh include/note-column.hh include/item.hh \
+	include/boxes.hh include/script-column.hh \
 	include/horizontal-vertical-group-item.hh \
 	include/axis-group-item.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh include/elem-group.hh
+	include/axis-group-administration.hh \
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/horizontal-group-elem.hh
 slur.o: slur.cc include/slur.hh include/directional-spanner.hh \
 	include/spanner.hh include/lily-proto.hh \
 	../lib/include/proto.hh ../flower/include/fproto.hh \
@@ -3326,9 +3509,9 @@ slur.o: slur.cc include/slur.hh include/directional-spanner.hh \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	../flower/include/interval.hh include/drul-array.hh \
-	include/direction.hh include/bow.hh ../flower/include/scalar.hh \
-	include/lookup.hh include/atom.hh include/boxes.hh \
-	include/paper-def.hh ../lib/include/moment.hh \
+	include/direction.hh include/rod.hh include/bow.hh \
+	../flower/include/scalar.hh include/lookup.hh include/atom.hh \
+	include/boxes.hh include/paper-def.hh ../lib/include/moment.hh \
 	../flower/include/rational.hh include/music-output-def.hh \
 	../flower/include/plist.hh ../flower/include/list.hh \
 	../flower/include/list.icc ../flower/include/cursor.hh \
@@ -3339,7 +3522,9 @@ slur.o: slur.cc include/slur.hh include/directional-spanner.hh \
 	include/note-column.hh include/item.hh include/script-column.hh \
 	include/horizontal-vertical-group-item.hh \
 	include/axis-group-item.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh include/elem-group.hh \
+	include/axis-group-administration.hh \
+	include/horizontal-vertical-group-elem.hh \
+	include/vertical-group-elem.hh include/horizontal-group-elem.hh \
 	include/stem.hh include/molecule.hh include/p-col.hh \
 	include/horizontal-group-item.hh include/debug.hh \
 	../flower/include/dstream.hh ../lib/include/warn.hh
@@ -3364,9 +3549,7 @@ span-bar-grav.o: span-bar-grav.cc include/span-bar.hh include/bar.hh \
 	include/staff-info.hh include/translator.hh \
 	../flower/include/dictionary.hh ../flower/include/assoc.hh \
 	include/vertical-align-spanner.hh include/spanner.hh \
-	include/vertical-align-elem.hh include/elem-group.hh \
-	include/axis-group-element.hh \
-	include/axis-group-administration.hh
+	include/rod.hh include/vertical-align-elem.hh
 span-bar.o: span-bar.cc include/dimen.hh ../flower/include/real.hh \
 	../flower/include/string.hh \
 	../flower/include/arithmetic-operator.hh \
@@ -3390,9 +3573,7 @@ span-bar.o: span-bar.cc include/dimen.hh ../flower/include/real.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
 	../flower/include/plist.icc ../flower/include/dictionary.hh \
 	../flower/include/assoc.hh include/molecule.hh \
-	include/vertical-align-elem.hh include/elem-group.hh \
-	include/axis-group-element.hh \
-	include/axis-group-administration.hh
+	include/vertical-align-elem.hh
 span-score-bar-grav.o: span-score-bar-grav.cc include/span-score-bar.hh \
 	include/span-bar.hh include/bar.hh include/item.hh \
 	include/boxes.hh ../flower/include/fproto.hh \
@@ -3452,9 +3633,9 @@ spanner.o: spanner.cc include/debug.hh ../flower/include/dstream.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
 	../flower/include/interval.hh include/drul-array.hh \
-	include/direction.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
-	include/axis-group-element.hh \
+	include/direction.hh include/rod.hh include/p-col.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh ../flower/include/plist.hh \
 	../flower/include/list.hh ../flower/include/list.icc \
@@ -3474,28 +3655,29 @@ spring-spacer.o: spring-spacer.cc include/spring-spacer.hh \
 	../flower/include/link.icc ../flower/include/pcursor.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
 	../flower/include/plist.icc include/col-info.hh \
-	../flower/include/pointer.hh include/colhpos.hh \
-	../lib/include/moment.hh ../flower/include/rational.hh \
+	../flower/include/pointer.hh ../flower/include/assoc.hh \
+	include/colhpos.hh ../lib/include/moment.hh \
+	../flower/include/rational.hh \
 	../flower/include/arithmetic-operator.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/virtual-methods.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
 	../flower/include/string.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh \
-	include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
-	include/direction.hh include/debug.hh \
+	include/direction.hh include/rod.hh include/debug.hh \
 	../flower/include/dstream.hh ../lib/include/warn.hh \
 	include/qlp.hh include/ineq-constrained-qp.hh \
 	../flower/include/matrix.hh ../flower/include/matrix-storage.hh \
 	../flower/include/unionfind.hh include/idealspacing.hh \
 	../flower/include/pointer.tcc include/score-column.hh \
 	include/paper-def.hh include/music-output-def.hh \
-	../flower/include/dictionary.hh ../flower/include/assoc.hh \
-	include/dimen.hh include/main.hh
+	../flower/include/dictionary.hh include/dimen.hh \
+	include/main.hh
 staff-info.o: staff-info.cc ../lib/include/proto.hh \
 	../flower/include/fproto.hh ../flower/include/real.hh \
 	../flower/include/plist.hh ../flower/include/list.hh \
@@ -3508,17 +3690,18 @@ staff-info.o: staff-info.cc ../lib/include/proto.hh \
 	../flower/include/varray.hh ../lib/include/moment.hh \
 	../flower/include/rational.hh \
 	../flower/include/arithmetic-operator.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/virtual-methods.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
 	../flower/include/string.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
-	include/direction.hh
+	include/direction.hh include/rod.hh
 staff-performer.o: staff-performer.cc include/staff-performer.hh \
 	include/performer-group-performer.hh include/lily-proto.hh \
 	../lib/include/proto.hh ../flower/include/fproto.hh \
@@ -3565,7 +3748,7 @@ staff-side.o: staff-side.cc ../flower/include/interval.hh \
 	../flower/include/parray.hh ../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
 	include/direction.hh include/staff-sym.hh include/spanner.hh \
-	include/drul-array.hh include/debug.hh \
+	include/drul-array.hh include/rod.hh include/debug.hh \
 	../flower/include/dstream.hh ../lib/include/warn.hh
 staff-sym-grav.o: staff-sym-grav.cc include/staff-sym-grav.hh \
 	include/engraver.hh include/lily-proto.hh \
@@ -3586,14 +3769,14 @@ staff-sym-grav.o: staff-sym-grav.cc include/staff-sym-grav.hh \
 	include/spanner.hh include/score-elem.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
-	include/drul-array.hh include/score.hh \
+	include/drul-array.hh include/rod.hh include/score.hh \
 	../flower/include/plist.hh ../flower/include/list.hh \
 	../flower/include/list.icc ../flower/include/cursor.hh \
 	../flower/include/link.hh ../flower/include/link.icc \
 	../flower/include/pcursor.hh ../flower/include/cursor.icc \
 	../flower/include/iterate.hh ../flower/include/plist.icc \
 	include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh include/axis-group-element.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh
 staff-sym.o: staff-sym.cc include/staff-sym.hh include/spanner.hh \
@@ -3609,8 +3792,8 @@ staff-sym.o: staff-sym.cc include/staff-sym.hh include/spanner.hh \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	../flower/include/interval.hh include/drul-array.hh \
-	include/direction.hh include/lookup.hh include/atom.hh \
-	include/boxes.hh ../flower/include/scalar.hh \
+	include/direction.hh include/rod.hh include/lookup.hh \
+	include/atom.hh include/boxes.hh ../flower/include/scalar.hh \
 	include/paper-def.hh ../lib/include/moment.hh \
 	../flower/include/rational.hh include/music-output-def.hh \
 	../flower/include/plist.hh ../flower/include/list.hh \
@@ -3703,12 +3886,13 @@ stem.o: stem.cc include/stem.hh include/item.hh include/boxes.hh \
 	../flower/include/assoc.hh include/note-head.hh \
 	include/rhythmic-head.hh include/lookup.hh include/atom.hh \
 	../flower/include/scalar.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
-	include/axis-group-element.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
-	include/misc.hh include/grouping.hh include/minterval.hh \
-	include/beam.hh include/directional-spanner.hh \
-	include/spanner.hh include/rest.hh
+	include/rod.hh include/misc.hh include/grouping.hh \
+	include/minterval.hh include/beam.hh \
+	include/directional-spanner.hh include/spanner.hh \
+	include/rest.hh
 super-elem.o: super-elem.cc include/super-elem.hh include/score-elem.hh \
 	../flower/include/parray.hh ../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
@@ -3722,7 +3906,7 @@ super-elem.o: super-elem.cc include/super-elem.hh include/score-elem.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
 	../flower/include/interval.hh include/scoreline.hh \
 	include/colhpos.hh include/spanner.hh include/drul-array.hh \
-	include/direction.hh include/p-score.hh \
+	include/direction.hh include/rod.hh include/p-score.hh \
 	../flower/include/plist.hh ../flower/include/list.hh \
 	../flower/include/list.icc ../flower/include/cursor.hh \
 	../flower/include/link.hh ../flower/include/link.icc \
@@ -3785,7 +3969,8 @@ template1.o: template1.cc ../lib/include/proto.hh \
 	../flower/include/compare.hh ../flower/include/pcursor.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
 	../flower/include/plist.icc include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
@@ -3795,10 +3980,10 @@ template1.o: template1.cc ../lib/include/proto.hh \
 	../flower/include/arithmetic-operator.hh \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
-	include/direction.hh include/musical-request.hh \
+	include/direction.hh include/rod.hh include/musical-request.hh \
 	include/request.hh ../lib/include/moment.hh \
 	../flower/include/rational.hh ../lib/include/input.hh \
 	include/music.hh include/minterval.hh \
@@ -3838,22 +4023,7 @@ template4.o: template4.cc ../lib/include/proto.hh \
 	../flower/include/cursor.hh ../flower/include/link.hh \
 	../flower/include/link.icc ../flower/include/compare.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc include/audio-item.hh \
-	include/lily-proto.hh ../flower/include/string.hh \
-	../flower/include/arithmetic-operator.hh \
-	../flower/include/string-handle.hh \
-	../flower/include/international.hh include/audio-element.hh \
-	../flower/include/virtual-methods.hh include/audio-staff.hh \
-	include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh include/score-elem.hh \
-	../flower/include/parray.hh ../flower/include/varray.hh \
-	../flower/include/directed-graph.hh \
-	include/graphical-element.hh include/offset.hh include/axes.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh include/axis-group-item.hh \
-	include/item.hh include/boxes.hh include/drul-array.hh \
-	include/direction.hh include/p-score.hh include/colhpos.hh \
-	include/music-output.hh ../flower/include/cursor.tcc \
+	../flower/include/plist.icc ../flower/include/cursor.tcc \
 	../flower/include/list.tcc ../flower/include/pcursor.tcc \
 	../flower/include/plist.tcc
 template5.o: template5.cc ../lib/include/proto.hh \
@@ -4051,13 +4221,13 @@ text-spanner.o: text-spanner.cc include/molecule.hh \
 	../flower/include/virtual-methods.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/drul-array.hh \
-	include/text-def.hh include/general-script-def.hh \
-	../lib/include/input.hh include/debug.hh \
-	../flower/include/dstream.hh ../lib/include/warn.hh \
-	include/paper-def.hh ../lib/include/moment.hh \
-	../flower/include/rational.hh include/music-output-def.hh \
-	../flower/include/dictionary.hh ../flower/include/assoc.hh \
-	include/atom.hh
+	include/rod.hh include/text-def.hh \
+	include/general-script-def.hh ../lib/include/input.hh \
+	include/debug.hh ../flower/include/dstream.hh \
+	../lib/include/warn.hh include/paper-def.hh \
+	../lib/include/moment.hh ../flower/include/rational.hh \
+	include/music-output-def.hh ../flower/include/dictionary.hh \
+	../flower/include/assoc.hh include/atom.hh
 tie-grav.o: tie-grav.cc include/tie-grav.hh include/engraver.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
 	../flower/include/fproto.hh ../flower/include/real.hh \
@@ -4077,7 +4247,7 @@ tie-grav.o: tie-grav.cc include/tie-grav.hh include/engraver.hh \
 	include/directional-spanner.hh include/spanner.hh \
 	include/score-elem.hh ../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
-	include/drul-array.hh include/note-head.hh \
+	include/drul-array.hh include/rod.hh include/note-head.hh \
 	include/rhythmic-head.hh include/item.hh include/boxes.hh \
 	include/musical-request.hh ../lib/include/duration.hh \
 	../lib/include/plet.hh include/music-list.hh \
@@ -4106,10 +4276,11 @@ tie.o: tie.cc include/paper-def.hh include/lily-proto.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
-	include/drul-array.hh include/direction.hh include/note-head.hh \
-	include/rhythmic-head.hh include/item.hh include/boxes.hh \
-	include/p-col.hh include/horizontal-group-item.hh \
-	include/elem-group.hh include/axis-group-element.hh \
+	include/drul-array.hh include/direction.hh include/rod.hh \
+	include/note-head.hh include/rhythmic-head.hh include/item.hh \
+	include/boxes.hh include/p-col.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/debug.hh ../flower/include/dstream.hh \
 	../lib/include/warn.hh
@@ -4266,9 +4437,8 @@ version.o: version.cc include/main.hh include/lily-proto.hh \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh
 vertical-align-elem.o: vertical-align-elem.cc \
-	include/vertical-align-elem.hh include/elem-group.hh \
-	include/score-elem.hh ../flower/include/parray.hh \
-	../flower/include/varray.hh \
+	include/vertical-align-elem.hh include/score-elem.hh \
+	../flower/include/parray.hh ../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
 	../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh \
@@ -4278,10 +4448,10 @@ vertical-align-elem.o: vertical-align-elem.cc \
 	../flower/include/fproto.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh
+	../flower/include/interval.hh
 vertical-align-grav.o: vertical-align-grav.cc include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/parray.hh \
 	../flower/include/varray.hh \
 	../flower/include/virtual-methods.hh \
@@ -4293,7 +4463,7 @@ vertical-align-grav.o: vertical-align-grav.cc include/p-col.hh \
 	../flower/include/fproto.hh ../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
-	../flower/include/interval.hh include/axis-group-element.hh \
+	../flower/include/interval.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
 	include/direction.hh ../flower/include/plist.hh \
@@ -4301,15 +4471,16 @@ vertical-align-grav.o: vertical-align-grav.cc include/p-col.hh \
 	../flower/include/cursor.hh ../flower/include/link.hh \
 	../flower/include/link.icc ../flower/include/pcursor.hh \
 	../flower/include/cursor.icc ../flower/include/iterate.hh \
-	../flower/include/plist.icc include/vertical-align-grav.hh \
-	include/engraver.hh include/request.hh ../lib/include/moment.hh \
+	../flower/include/plist.icc include/rod.hh \
+	include/vertical-align-grav.hh include/engraver.hh \
+	include/request.hh ../lib/include/moment.hh \
 	../flower/include/rational.hh ../lib/include/input.hh \
 	include/music.hh include/minterval.hh \
 	include/score-elem-info.hh ../flower/include/scalar.hh \
 	include/staff-info.hh include/translator.hh \
 	../flower/include/dictionary.hh ../flower/include/assoc.hh \
 	include/vertical-align-spanner.hh include/spanner.hh \
-	include/vertical-align-elem.hh
+	include/vertical-align-elem.hh include/vertical-group-elem.hh
 vertical-align-spanner.o: vertical-align-spanner.cc \
 	include/vertical-align-spanner.hh include/spanner.hh \
 	include/lily-proto.hh ../lib/include/proto.hh \
@@ -4324,9 +4495,26 @@ vertical-align-spanner.o: vertical-align-spanner.cc \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	../flower/include/interval.hh include/drul-array.hh \
-	include/direction.hh include/vertical-align-elem.hh \
-	include/elem-group.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh
+	include/direction.hh include/rod.hh \
+	include/vertical-align-elem.hh
+vertical-group-elem.o: vertical-group-elem.cc \
+	include/vertical-group-elem.hh include/axis-group-element.hh \
+	include/score-elem.hh ../flower/include/parray.hh \
+	../flower/include/varray.hh \
+	../flower/include/virtual-methods.hh \
+	../flower/include/directed-graph.hh \
+	include/graphical-element.hh include/offset.hh \
+	../flower/include/real.hh include/axes.hh \
+	../flower/include/string.hh \
+	../flower/include/arithmetic-operator.hh \
+	../flower/include/fproto.hh ../flower/include/string-handle.hh \
+	../flower/include/international.hh ../flower/include/compare.hh \
+	include/lily-proto.hh ../lib/include/proto.hh \
+	../flower/include/interval.hh \
+	include/axis-group-administration.hh include/item.hh \
+	include/boxes.hh include/drul-array.hh include/direction.hh \
+	include/debug.hh ../flower/include/dstream.hh \
+	../lib/include/warn.hh
 vertical-group-spanner.o: vertical-group-spanner.cc \
 	include/vertical-group-spanner.hh include/axis-group-spanner.hh \
 	include/spanner.hh include/lily-proto.hh \
@@ -4341,10 +4529,12 @@ vertical-group-spanner.o: vertical-group-spanner.cc \
 	../flower/include/string-handle.hh \
 	../flower/include/international.hh ../flower/include/compare.hh \
 	../flower/include/interval.hh include/drul-array.hh \
-	include/direction.hh include/axis-group-element.hh \
-	include/axis-group-administration.hh include/elem-group.hh \
-	include/item.hh include/boxes.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/axis-group-item.hh \
+	include/direction.hh include/rod.hh \
+	include/axis-group-element.hh \
+	include/axis-group-administration.hh \
+	include/vertical-group-elem.hh include/item.hh include/boxes.hh \
+	include/p-col.hh include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-item.hh \
 	../flower/include/plist.hh ../flower/include/list.hh \
 	../flower/include/list.icc ../flower/include/cursor.hh \
 	../flower/include/link.hh ../flower/include/link.icc \
@@ -4411,13 +4601,13 @@ word-wrap.o: word-wrap.cc include/word-wrap.hh include/break.hh \
 	../flower/include/parray.hh include/music-output.hh \
 	include/debug.hh ../flower/include/dstream.hh \
 	../lib/include/warn.hh include/p-col.hh \
-	include/horizontal-group-item.hh include/elem-group.hh \
+	include/horizontal-group-item.hh \
+	include/horizontal-group-elem.hh include/axis-group-element.hh \
 	include/score-elem.hh ../flower/include/directed-graph.hh \
 	include/graphical-element.hh include/offset.hh include/axes.hh \
-	include/axis-group-element.hh \
 	include/axis-group-administration.hh include/axis-group-item.hh \
 	include/item.hh include/boxes.hh include/drul-array.hh \
-	include/direction.hh include/spring-spacer.hh \
+	include/direction.hh include/rod.hh include/spring-spacer.hh \
 	include/line-spacer.hh ../flower/include/vector.hh \
 	include/col-info.hh ../flower/include/pointer.hh
 
@@ -4484,7 +4674,7 @@ mostlyclean:  mostlyclean-recursive mostlyclean-am
 
 clean:  clean-recursive clean-am
 
-distclean:  distclean-recursive distclean-am
+distclean:  distclean-recursive distclean-am distclean-local
 	-rm -f config.status
 	-rm -f libtool
 
@@ -4529,8 +4719,10 @@ all-am: Makefile $(PROGRAMS) wild-check
 # dummy target for non-GNU makes; is overridden in GNUmakefile
 wild-check:
 
+distclean-local:
+	-rm -rf .deps
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/lily/VERSION b/lily/VERSION
index 8eb70f97ca..1d1ec0f441 100644
--- a/lily/VERSION
+++ b/lily/VERSION
@@ -1,4 +1,4 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 1
-PATCH_LEVEL = 50
+PATCH_LEVEL = 52
 MY_PATCH_LEVEL =
diff --git a/lily/axis-group-element.cc b/lily/axis-group-element.cc
index 8ef35c0bea..b97b94cf61 100644
--- a/lily/axis-group-element.cc
+++ b/lily/axis-group-element.cc
@@ -57,3 +57,5 @@ Axis_group_element::Axis_group_element()
   transparent_b_ = true;
 }
 
+
+IMPLEMENT_IS_TYPE_B1(Axis_group_element, Score_elem);
diff --git a/lily/axis-group-item.cc b/lily/axis-group-item.cc
index f22332098b..8419f85ad5 100644
--- a/lily/axis-group-item.cc
+++ b/lily/axis-group-item.cc
@@ -42,7 +42,7 @@ Axis_group_item::do_breakable_col_processing()
 	    it_l->find_prebroken_piece (broken_to_drul_[j]->break_status_i_);
 	  ((Axis_group_item*)broken_to_drul_[j])->add_element (new_l);
 	}
-      while ((j*=-1)!=LEFT);
+      while (flip(&j)!=LEFT);
     }
   Item::do_breakable_col_processing();
 }
diff --git a/lily/axis-group-spanner.cc b/lily/axis-group-spanner.cc
index 42050ae5b4..5cace351e3 100644
--- a/lily/axis-group-spanner.cc
+++ b/lily/axis-group-spanner.cc
@@ -98,7 +98,7 @@ Axis_group_spanner::do_break_processing()
 		  if (v)
 		    v->add_element (my_item);
 		}
-	      while ((j*=-1) != LEFT);
+	      while (flip(&j) != LEFT);
 	    }
 	}
       else 
diff --git a/lily/beam.cc b/lily/beam.cc
index cb6159ae09..a463ff233f 100644
--- a/lily/beam.cc
+++ b/lily/beam.cc
@@ -151,7 +151,7 @@ Beam::set_default_dir ()
       Stem *s = stems_[i];
       int current = s->dir_ 
 	? (1 + d * s->dir_)/2
-	: s->get_center_distance (Direction (-d));
+	: s->get_center_distance ((Direction)-d);
 
       if (current)
 	{
@@ -159,12 +159,12 @@ Beam::set_default_dir ()
 	  count[d] ++;
 	}
 
-    } while ((d *= -1) != DOWN);
+    } while (flip(&d) != DOWN);
   
    do {
     if (!total[d])
       count[d] = 1;
-  } while ((d *= -1) != DOWN);
+  } while (flip(&d) != DOWN);
   
   /* 
 
diff --git a/lily/break.cc b/lily/break.cc
index 8475f79db4..2b29b433f5 100644
--- a/lily/break.cc
+++ b/lily/break.cc
@@ -135,16 +135,13 @@ Break_algorithm::feasible (Line_of_cols curline) const
   if (linelength <=  0)
     return true;
 
-  Real l =0;
   for (int i=0; i < curline.size (); i++)
     {
       if (i && i < curline.size () -1
 	  && ((Score_column*)curline[i])->forced_break_b ())
 	return false;
-      
-      l +=curline[i]->width ().length ();
     }
-  return l < linelength;
+  return true;
 }
 
 void
diff --git a/lily/col-info.cc b/lily/col-info.cc
index 83c7f61fbc..9fa43ef8d3 100644
--- a/lily/col-info.cc
+++ b/lily/col-info.cc
@@ -15,7 +15,7 @@ Colinfo::print() const
 {
 #ifndef NPRINT
   DOUT << "column { ";
-  if (fixed())
+  if (fixed_b())
     DOUT << "fixed at " << fixed_position()<<", ";
   assert (pcol_l_);
   DOUT << width_.str();
@@ -41,3 +41,20 @@ Colinfo::Colinfo()
   pcol_l_ =0;
 }
 
+bool
+Colinfo::fixed_b () const
+{
+ return fixpos_p_.get_C();
+}
+
+Real
+Colinfo::fixed_position () const
+{
+  return *fixpos_p_;
+}
+
+int
+Colinfo::rank_i () const
+{
+  return pcol_l_->rank_i ();
+}
diff --git a/lily/crescendo.cc b/lily/crescendo.cc
index 22920506ec..400b6709a0 100644
--- a/lily/crescendo.cc
+++ b/lily/crescendo.cc
@@ -53,7 +53,7 @@ Crescendo::get_symbol() const
   do {
     Score_column* s = (Score_column* )spanned_drul_[d] ; // UGH
     broken[d] = (!s->musical_b());
-  } while ((d *= -1) != LEFT);
+  } while (flip(&d) != LEFT);
   
 
   bool continued = broken[(Direction)-grow_dir_];
diff --git a/lily/dynamic-grav.cc b/lily/dynamic-grav.cc
index 69859a59c3..c4fe4b46af 100644
--- a/lily/dynamic-grav.cc
+++ b/lily/dynamic-grav.cc
@@ -50,7 +50,7 @@ Dynamic_engraver::do_process_requests()
       if (dreq_l->absdynamic())
 	{
 	  Text_def * td_p = new Text_def;
-	  td_p->align_i_ = 0;
+	  td_p->align_i_ = CENTER;
 	  String loud = dreq_l->absdynamic()->loudness_str ();
 	  td_p->text_str_ = paper()->lookup_l ()->dynamic (loud).tex_;
 	  td_p->style_str_ = "dynamic";
diff --git a/lily/elem-group.cc b/lily/elem-group.cc
deleted file mode 100644
index 4e215381cf..0000000000
--- a/lily/elem-group.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-  elem-group.cc -- implement Horizontal_vertical_group_element
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "elem-group.hh"
-#include "interval.hh"
-#include "item.hh"
-#include "debug.hh"
-
-
-void
-Vertical_group_element::add_element (Graphical_element*e)
-{
-  axis_admin_.add_element (e, this, Y_AXIS, Y_AXIS);
-}
-
-void
-Vertical_group_element::remove_element (Graphical_element*e)
-{
-  axis_admin_.remove_element (e, Y_AXIS, Y_AXIS);
-}
-
-
-Interval
-Vertical_group_element::do_height() const
-{
-  return axis_admin_.extent (Y_AXIS);
-}
-void
-Vertical_group_element::remove_all()
-{
-  axis_admin_.remove_all (Y_AXIS,Y_AXIS);
-}
-
-// ****************
-
-void
-Horizontal_group_element::remove_all()
-{
-  axis_admin_.remove_all (X_AXIS,X_AXIS);
-}
-
-void
-Horizontal_group_element::add_element (Graphical_element*e)
-{
-  axis_admin_.add_element (e,this, X_AXIS,X_AXIS);
-}
-
-void
-Horizontal_group_element::remove_element (Graphical_element*e)
-{
-  axis_admin_.remove_element (e,X_AXIS,X_AXIS);
-}
-
-
-Interval
-Horizontal_group_element::do_width() const
-{
-  return axis_admin_.extent (X_AXIS);
-}
-
-
-// ****************
-
-void
-Horizontal_vertical_group_element::remove_all()
-{
-  axis_admin_.remove_all (X_AXIS,Y_AXIS);
-}
-void
-Horizontal_vertical_group_element::add_element (Graphical_element *e)
-{
-  axis_admin_.add_element (e, this, X_AXIS, Y_AXIS);
-}
-
-void
-Horizontal_vertical_group_element::remove_element (Graphical_element*e)
-{
-  axis_admin_.remove_element (e, X_AXIS, Y_AXIS);
-}
-
-
-
-IMPLEMENT_IS_TYPE_B1(Axis_group_element, Score_elem);
-IMPLEMENT_IS_TYPE_B1(Horizontal_group_element, Axis_group_element);
-IMPLEMENT_IS_TYPE_B1(Vertical_group_element, Axis_group_element);
-IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group_element, Horizontal_group_element, Vertical_group_element);
diff --git a/lily/general-script-def.cc b/lily/general-script-def.cc
index 66370135f8..e434e35609 100644
--- a/lily/general-script-def.cc
+++ b/lily/general-script-def.cc
@@ -71,3 +71,11 @@ General_script_def::get_atom (Paper_def*, Direction) const
 }
 
 IMPLEMENT_IS_TYPE_B(General_script_def);
+
+
+Interval
+General_script_def::width (Paper_def*) const
+{
+  Interval t;
+  return t;
+}
diff --git a/lily/horizontal-group-elem.cc b/lily/horizontal-group-elem.cc
new file mode 100644
index 0000000000..85ca745509
--- /dev/null
+++ b/lily/horizontal-group-elem.cc
@@ -0,0 +1,34 @@
+
+#include "horizontal-group-elem.hh"
+#include "interval.hh"
+#include "item.hh"
+#include "debug.hh"
+
+
+IMPLEMENT_IS_TYPE_B1(Horizontal_group_element, Axis_group_element);
+
+void
+Horizontal_group_element::remove_all()
+{
+  axis_admin_.remove_all (X_AXIS,X_AXIS);
+}
+
+void
+Horizontal_group_element::add_element (Graphical_element*e)
+{
+  axis_admin_.add_element (e,this, X_AXIS,X_AXIS);
+}
+
+void
+Horizontal_group_element::remove_element (Graphical_element*e)
+{
+  axis_admin_.remove_element (e,X_AXIS,X_AXIS);
+}
+
+
+Interval
+Horizontal_group_element::do_width() const
+{
+  return axis_admin_.extent (X_AXIS);
+}
+
diff --git a/lily/horizontal-vertical-group-elem.cc b/lily/horizontal-vertical-group-elem.cc
new file mode 100644
index 0000000000..6b5ddd79b6
--- /dev/null
+++ b/lily/horizontal-vertical-group-elem.cc
@@ -0,0 +1,26 @@
+
+#include "horizontal-vertical-group-elem.hh"
+#include "interval.hh"
+#include "item.hh"
+#include "debug.hh"
+
+void
+Horizontal_vertical_group_element::remove_all()
+{
+  axis_admin_.remove_all (X_AXIS,Y_AXIS);
+}
+void
+Horizontal_vertical_group_element::add_element (Graphical_element *e)
+{
+  axis_admin_.add_element (e, this, X_AXIS, Y_AXIS);
+}
+
+void
+Horizontal_vertical_group_element::remove_element (Graphical_element*e)
+{
+  axis_admin_.remove_element (e, X_AXIS, Y_AXIS);
+}
+
+
+
+IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group_element, Horizontal_group_element, Vertical_group_element);
diff --git a/lily/include/Makefile.am b/lily/include/Makefile.am
index 33cc6f410a..bcef2c017f 100644
--- a/lily/include/Makefile.am
+++ b/lily/include/Makefile.am
@@ -3,9 +3,9 @@
 # Generated automatically by wild-perl 0.1
 # lily/include/Makefile.am.wild
 
-noinst_HEADERS = abbrev.hh abbreviation-beam-engraver.hh abbreviation-beam.hh atom.hh audio-column.hh audio-element.hh audio-item.hh audio-staff.hh axes.hh axis-group-administration.hh axis-group-element.hh axis-group-item.hh axis-group-spanner.hh bar-align-grav.hh bar-column-grav.hh bar-column.hh bar-grav.hh bar-number-grav.hh bar.hh beam-grav.hh beam-swallow-trans.hh beam.hh bow.hh boxes.hh break-align-item.hh break-caching.hh break.hh change-iterator.hh change-translator.hh chord-iterator.hh clef-grav.hh clef-item.hh col-info.hh colhpos.hh collision-grav.hh collision.hh command-request.hh const.hh crescendo.hh debug.hh dimen.hh direction.hh directional-spanner.hh dot-column-grav.hh dot-column.hh dots.hh drul-array.hh dynamic-grav.hh elem-group.hh engraver-group.hh engraver.hh general-script-def.hh glob.hh global-translator.hh gourlay-breaking.hh graphical-element.hh grouping.hh head-column.hh head-grav.hh header.hh horizontal-align-item.hh horizontal-group-item.hh horizontal-vertical-group-item.hh idealspacing.hh identifier.hh ineq-constrained-qp.hh item.hh key-grav.hh key-item.hh key-performer.hh key.hh keyword.hh leastsquares.hh lily-proto.hh line-group-grav.hh line-spacer.hh linear-programming.hh linespace.hh local-key-grav.hh local-key-item.hh lookup.hh lyric-engraver.hh lyric-performer.hh main.hh meter-grav.hh meter-performer.hh meter.hh midi-def.hh midi-item.hh midi-stream.hh midi-walker.hh minterval.hh misc.hh molecule.hh music-iterator.hh music-list.hh music-output-def.hh music-output.hh music.hh musical-request.hh my-lily-lexer.hh my-lily-parser.hh note-column.hh note-head.hh note-performer.hh notename-table.hh notename.hh offset.hh outputter.hh p-col.hh p-score.hh paper-def.hh parseconstruct.hh performance.hh performer-group-performer.hh performer.hh pitch-squash-grav.hh plet-engraver.hh plet-spanner.hh plet-swallow-engraver.hh priority-halign-grav.hh property-iterator.hh qlp.hh qlpsolve.hh request-iterator.hh request.hh rest-collision-grav.hh rest-collision.hh rest-column-grav.hh rest-column.hh rest-grav.hh rest.hh rhythmic-column-grav.hh rhythmic-head.hh score-bar.hh score-column.hh score-elem-info.hh score-elem.hh score-grav.hh score-performer.hh score-priority-grav.hh score.hh scoreline.hh script-column.hh script-def.hh script-grav.hh script.hh slur-grav.hh slur.hh span-bar-grav.hh span-bar.hh span-score-bar-grav.hh span-score-bar.hh spanner.hh spring-spacer.hh staff-info.hh staff-performer.hh staff-side.hh staff-sym-grav.hh staff-sym.hh stem-grav.hh stem-info.hh stem.hh super-elem.hh swallow-grav.hh swallow-perf.hh symtable.hh tex-stream.hh tex.hh text-def.hh text-item.hh text-spanner.hh tie-grav.hh tie.hh time-description.hh timing-grav.hh timing-translator.hh todo-performer.hh translation-property.hh translator-change.hh translator-group.hh translator.hh type-swallow-trans.hh vertical-align-elem.hh vertical-align-grav.hh vertical-align-spanner.hh vertical-group-spanner.hh voice-iterator.hh word-wrap.hh dummy.icc minmax.tcc
+noinst_HEADERS = abbrev.hh abbreviation-beam-engraver.hh abbreviation-beam.hh atom.hh audio-column.hh audio-element.hh audio-item.hh audio-staff.hh axes.hh axis-group-administration.hh axis-group-element.hh axis-group-item.hh axis-group-spanner.hh bar-align-grav.hh bar-column-grav.hh bar-column.hh bar-grav.hh bar-number-grav.hh bar.hh beam-grav.hh beam-swallow-trans.hh beam.hh bow.hh boxes.hh break-align-item.hh break-caching.hh break.hh change-iterator.hh change-translator.hh chord-iterator.hh clef-grav.hh clef-item.hh col-info.hh colhpos.hh collision-grav.hh collision.hh command-request.hh const.hh crescendo.hh debug.hh dimen.hh direction.hh directional-spanner.hh dot-column-grav.hh dot-column.hh dots.hh drul-array.hh dynamic-grav.hh elem-group.hh engraver-group.hh engraver.hh general-script-def.hh glob.hh global-translator.hh gourlay-breaking.hh graphical-element.hh grouping.hh head-column.hh head-grav.hh header.hh horizontal-align-item.hh horizontal-group-elem.hh horizontal-group-item.hh horizontal-vertical-group-elem.hh horizontal-vertical-group-item.hh idealspacing.hh identifier.hh ineq-constrained-qp.hh item.hh key-grav.hh key-item.hh key-performer.hh key.hh keyword.hh leastsquares.hh lily-proto.hh line-group-grav.hh line-spacer.hh linear-programming.hh linespace.hh local-key-grav.hh local-key-item.hh lookup.hh lyric-engraver.hh lyric-performer.hh main.hh meter-grav.hh meter-performer.hh meter.hh midi-def.hh midi-item.hh midi-stream.hh midi-walker.hh minterval.hh misc.hh molecule.hh music-iterator.hh music-list.hh music-output-def.hh music-output.hh music.hh musical-request.hh my-lily-lexer.hh my-lily-parser.hh note-column.hh note-head.hh note-performer.hh notename-table.hh notename.hh offset.hh outputter.hh p-col.hh p-score.hh paper-def.hh parseconstruct.hh performance.hh performer-group-performer.hh performer.hh pitch-squash-grav.hh plet-engraver.hh plet-spanner.hh plet-swallow-engraver.hh priority-halign-grav.hh property-iterator.hh qlp.hh qlpsolve.hh request-iterator.hh request.hh rest-collision-grav.hh rest-collision.hh rest-column-grav.hh rest-column.hh rest-grav.hh rest.hh rhythmic-column-grav.hh rhythmic-head.hh rod.hh score-bar.hh score-column.hh score-elem-info.hh score-elem.hh score-grav.hh score-performer.hh score-priority-grav.hh score.hh scoreline.hh script-column.hh script-def.hh script-grav.hh script.hh separating-group-spanner.hh separating-line-group-grav.hh single-malt-grouping-item.hh slur-grav.hh slur.hh span-bar-grav.hh span-bar.hh span-score-bar-grav.hh span-score-bar.hh spanner.hh spring-spacer.hh staff-info.hh staff-performer.hh staff-side.hh staff-sym-grav.hh staff-sym.hh stem-grav.hh stem-info.hh stem.hh super-elem.hh swallow-grav.hh swallow-perf.hh symtable.hh tex-stream.hh tex.hh text-def.hh text-item.hh text-spanner.hh tie-grav.hh tie.hh time-description.hh timing-grav.hh timing-translator.hh todo-performer.hh translation-property.hh translator-change.hh translator-group.hh translator.hh type-swallow-trans.hh vertical-align-elem.hh vertical-align-grav.hh vertical-align-spanner.hh vertical-group-elem.hh vertical-group-spanner.hh voice-iterator.hh word-wrap.hh dummy.icc minmax.tcc
 
 EXTRA_DIST = Makefile.am.wild
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/lily/include/Makefile.in b/lily/include/Makefile.in
index 7da93c0656..b51e7448b8 100644
--- a/lily/include/Makefile.in
+++ b/lily/include/Makefile.in
@@ -99,7 +99,7 @@ YACC = @YACC@
 ZIP = @ZIP@
 absolute_builddir = @absolute_builddir@
 
-noinst_HEADERS = abbrev.hh abbreviation-beam-engraver.hh abbreviation-beam.hh atom.hh audio-column.hh audio-element.hh audio-item.hh audio-staff.hh axes.hh axis-group-administration.hh axis-group-element.hh axis-group-item.hh axis-group-spanner.hh bar-align-grav.hh bar-column-grav.hh bar-column.hh bar-grav.hh bar-number-grav.hh bar.hh beam-grav.hh beam-swallow-trans.hh beam.hh bow.hh boxes.hh break-align-item.hh break-caching.hh break.hh change-iterator.hh change-translator.hh chord-iterator.hh clef-grav.hh clef-item.hh col-info.hh colhpos.hh collision-grav.hh collision.hh command-request.hh const.hh crescendo.hh debug.hh dimen.hh direction.hh directional-spanner.hh dot-column-grav.hh dot-column.hh dots.hh drul-array.hh dynamic-grav.hh elem-group.hh engraver-group.hh engraver.hh general-script-def.hh glob.hh global-translator.hh gourlay-breaking.hh graphical-element.hh grouping.hh head-column.hh head-grav.hh header.hh horizontal-align-item.hh horizontal-group-item.hh horizontal-vertical-group-item.hh idealspacing.hh identifier.hh ineq-constrained-qp.hh item.hh key-grav.hh key-item.hh key-performer.hh key.hh keyword.hh leastsquares.hh lily-proto.hh line-group-grav.hh line-spacer.hh linear-programming.hh linespace.hh local-key-grav.hh local-key-item.hh lookup.hh lyric-engraver.hh lyric-performer.hh main.hh meter-grav.hh meter-performer.hh meter.hh midi-def.hh midi-item.hh midi-stream.hh midi-walker.hh minterval.hh misc.hh molecule.hh music-iterator.hh music-list.hh music-output-def.hh music-output.hh music.hh musical-request.hh my-lily-lexer.hh my-lily-parser.hh note-column.hh note-head.hh note-performer.hh notename-table.hh notename.hh offset.hh outputter.hh p-col.hh p-score.hh paper-def.hh parseconstruct.hh performance.hh performer-group-performer.hh performer.hh pitch-squash-grav.hh plet-engraver.hh plet-spanner.hh plet-swallow-engraver.hh priority-halign-grav.hh property-iterator.hh qlp.hh qlpsolve.hh request-iterator.hh request.hh rest-collision-grav.hh rest-collision.hh rest-column-grav.hh rest-column.hh rest-grav.hh rest.hh rhythmic-column-grav.hh rhythmic-head.hh score-bar.hh score-column.hh score-elem-info.hh score-elem.hh score-grav.hh score-performer.hh score-priority-grav.hh score.hh scoreline.hh script-column.hh script-def.hh script-grav.hh script.hh slur-grav.hh slur.hh span-bar-grav.hh span-bar.hh span-score-bar-grav.hh span-score-bar.hh spanner.hh spring-spacer.hh staff-info.hh staff-performer.hh staff-side.hh staff-sym-grav.hh staff-sym.hh stem-grav.hh stem-info.hh stem.hh super-elem.hh swallow-grav.hh swallow-perf.hh symtable.hh tex-stream.hh tex.hh text-def.hh text-item.hh text-spanner.hh tie-grav.hh tie.hh time-description.hh timing-grav.hh timing-translator.hh todo-performer.hh translation-property.hh translator-change.hh translator-group.hh translator.hh type-swallow-trans.hh vertical-align-elem.hh vertical-align-grav.hh vertical-align-spanner.hh vertical-group-spanner.hh voice-iterator.hh word-wrap.hh dummy.icc minmax.tcc
+noinst_HEADERS = abbrev.hh abbreviation-beam-engraver.hh abbreviation-beam.hh atom.hh audio-column.hh audio-element.hh audio-item.hh audio-staff.hh axes.hh axis-group-administration.hh axis-group-element.hh axis-group-item.hh axis-group-spanner.hh bar-align-grav.hh bar-column-grav.hh bar-column.hh bar-grav.hh bar-number-grav.hh bar.hh beam-grav.hh beam-swallow-trans.hh beam.hh bow.hh boxes.hh break-align-item.hh break-caching.hh break.hh change-iterator.hh change-translator.hh chord-iterator.hh clef-grav.hh clef-item.hh col-info.hh colhpos.hh collision-grav.hh collision.hh command-request.hh const.hh crescendo.hh debug.hh dimen.hh direction.hh directional-spanner.hh dot-column-grav.hh dot-column.hh dots.hh drul-array.hh dynamic-grav.hh elem-group.hh engraver-group.hh engraver.hh general-script-def.hh glob.hh global-translator.hh gourlay-breaking.hh graphical-element.hh grouping.hh head-column.hh head-grav.hh header.hh horizontal-align-item.hh horizontal-group-elem.hh horizontal-group-item.hh horizontal-vertical-group-elem.hh horizontal-vertical-group-item.hh idealspacing.hh identifier.hh ineq-constrained-qp.hh item.hh key-grav.hh key-item.hh key-performer.hh key.hh keyword.hh leastsquares.hh lily-proto.hh line-group-grav.hh line-spacer.hh linear-programming.hh linespace.hh local-key-grav.hh local-key-item.hh lookup.hh lyric-engraver.hh lyric-performer.hh main.hh meter-grav.hh meter-performer.hh meter.hh midi-def.hh midi-item.hh midi-stream.hh midi-walker.hh minterval.hh misc.hh molecule.hh music-iterator.hh music-list.hh music-output-def.hh music-output.hh music.hh musical-request.hh my-lily-lexer.hh my-lily-parser.hh note-column.hh note-head.hh note-performer.hh notename-table.hh notename.hh offset.hh outputter.hh p-col.hh p-score.hh paper-def.hh parseconstruct.hh performance.hh performer-group-performer.hh performer.hh pitch-squash-grav.hh plet-engraver.hh plet-spanner.hh plet-swallow-engraver.hh priority-halign-grav.hh property-iterator.hh qlp.hh qlpsolve.hh request-iterator.hh request.hh rest-collision-grav.hh rest-collision.hh rest-column-grav.hh rest-column.hh rest-grav.hh rest.hh rhythmic-column-grav.hh rhythmic-head.hh rod.hh score-bar.hh score-column.hh score-elem-info.hh score-elem.hh score-grav.hh score-performer.hh score-priority-grav.hh score.hh scoreline.hh script-column.hh script-def.hh script-grav.hh script.hh separating-group-spanner.hh separating-line-group-grav.hh single-malt-grouping-item.hh slur-grav.hh slur.hh span-bar-grav.hh span-bar.hh span-score-bar-grav.hh span-score-bar.hh spanner.hh spring-spacer.hh staff-info.hh staff-performer.hh staff-side.hh staff-sym-grav.hh staff-sym.hh stem-grav.hh stem-info.hh stem.hh super-elem.hh swallow-grav.hh swallow-perf.hh symtable.hh tex-stream.hh tex.hh text-def.hh text-item.hh text-spanner.hh tie-grav.hh tie.hh time-description.hh timing-grav.hh timing-translator.hh todo-performer.hh translation-property.hh translator-change.hh translator-group.hh translator.hh type-swallow-trans.hh vertical-align-elem.hh vertical-align-grav.hh vertical-align-spanner.hh vertical-group-elem.hh vertical-group-spanner.hh voice-iterator.hh word-wrap.hh dummy.icc minmax.tcc
 
 EXTRA_DIST = Makefile.am.wild
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -218,7 +218,7 @@ mostlyclean distclean maintainer-clean
 
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/lily/include/col-info.hh b/lily/include/col-info.hh
index 50944b6fc4..405712e99d 100644
--- a/lily/include/col-info.hh
+++ b/lily/include/col-info.hh
@@ -13,11 +13,13 @@
 #include "lily-proto.hh"
 #include "pointer.hh"
 #include "interval.hh"
+#include "assoc.hh"
 
 /// helper struct for #Spacing_problem#
 struct Colinfo {
   Paper_column *pcol_l_;
   P<Real> fixpos_p_;
+  Assoc<int, Real> min_dists_assoc_;
   Interval width_;
   int rank_i_;
   /// did some tricks to make this column come out.
@@ -26,9 +28,10 @@ struct Colinfo {
   Colinfo();
   Colinfo (Paper_column *,Real const *);
 
+  int rank_i () const;
   void print() const;
-  bool fixed() const { return fixpos_p_.get_C();}
-  Real fixed_position() const { return *fixpos_p_; }
+  bool fixed_b() const ;
+  Real fixed_position() const ;
 };
 
 #endif // COL_INFO_HH
diff --git a/lily/include/direction.hh b/lily/include/direction.hh
index d02274f6c1..66abd5f379 100644
--- a/lily/include/direction.hh
+++ b/lily/include/direction.hh
@@ -19,9 +19,17 @@ enum Direction
   CENTER=0,
   SMALLER=-1,
   BIGGER=1,
-
 };
 
+inline Direction
+flip (Direction *i) {
+  if (*i == (Direction)1)
+    *i = (Direction)-1;
+  else if (*i == (Direction)-1)
+    *i = (Direction)1;
+  return *i;
+}
+
 /**
    if d > 0: the max operator
    if d < 0: the min operator
diff --git a/lily/include/drul-array.hh b/lily/include/drul-array.hh
index 69db537a9b..962fd2b6c2 100644
--- a/lily/include/drul-array.hh
+++ b/lily/include/drul-array.hh
@@ -12,6 +12,8 @@
 
 #include "direction.hh"
 
+#include <assert.h>
+
 /**
   Left/right or Up/down arrays. Drul is nicer sounding than udlr
  */
diff --git a/lily/include/elem-group.hh b/lily/include/elem-group.hh
index 82ab4cc787..59bb03cdf0 100644
--- a/lily/include/elem-group.hh
+++ b/lily/include/elem-group.hh
@@ -15,49 +15,6 @@
 
 
 
-/**
-  Treat a group of elements a unity in horizontal sense .
-  A column is a typical Vertical_group.
- */
-class Horizontal_group_element : public virtual Axis_group_element {
-protected:
-    virtual void remove_all();
-    virtual Interval do_width() const;
-
-public:
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    virtual void add_element (Graphical_element*);
-    virtual void remove_element (Graphical_element*);
-
-};
-/**
-  Like Horizontal_group_element, but in X direction
- */
-class Vertical_group_element : public virtual Axis_group_element {
-protected:
-    virtual Interval do_height() const;
-    virtual void remove_all();
-
-public:
-    virtual void add_element (Graphical_element*);
-    virtual void remove_element (Graphical_element*);
-    DECLARE_MY_RUNTIME_TYPEINFO;
-};
-
-/** A class to treat a group of elements as a single entity. The
-  dimensions are the unions of the dimensions of what it contains.
-  Translation means translating the contents.
-  */
-class Horizontal_vertical_group_element : public Vertical_group_element, 
-				  public Horizontal_group_element 
-{  
-protected:
-    virtual void remove_all();
-public:
-    virtual void add_element (Graphical_element*);
-    virtual void remove_element (Graphical_element*);
-    
-    DECLARE_MY_RUNTIME_TYPEINFO;    
-};
 
+#error
 #endif // ELEM_GROUP_HH
diff --git a/lily/include/general-script-def.hh b/lily/include/general-script-def.hh
index 3788df867c..4faf568ae9 100644
--- a/lily/include/general-script-def.hh
+++ b/lily/include/general-script-def.hh
@@ -20,20 +20,21 @@
  */
 class General_script_def : public Input {
 public:
-    VIRTUAL_COPY_CONS(General_script_def,General_script_def);
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    virtual Direction staff_dir() const;
-    void print() const;
-    virtual Direction rel_stem_dir() const;
-    virtual int priority_i() const;
-    virtual bool inside_b() const;
-    virtual Atom get_atom (Paper_def* p, Direction dir_) const;
-    bool equal_b (General_script_def const&) const;
-    virtual ~General_script_def() {}
+  VIRTUAL_COPY_CONS(General_script_def,General_script_def);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  virtual Direction staff_dir() const;
+  void print() const;
+  virtual Direction rel_stem_dir() const;
+  virtual int priority_i() const;
+  virtual bool inside_b() const;
+  virtual Atom get_atom (Paper_def* p, Direction dir_) const;
+  bool equal_b (General_script_def const&) const;
+  virtual ~General_script_def() {}
     
+  virtual Interval width (Paper_def *) const;
 protected:
-    virtual bool do_equal_b (General_script_def const *) const;
-    virtual void do_print() const;
+  virtual bool do_equal_b (General_script_def const *) const;
+  virtual void do_print() const;
 };
 
 #endif // GENERAL_SCRIPT_DEF_HH
diff --git a/lily/include/horizontal-align-item.hh b/lily/include/horizontal-align-item.hh
index f223e07be1..7ae19db88b 100644
--- a/lily/include/horizontal-align-item.hh
+++ b/lily/include/horizontal-align-item.hh
@@ -9,7 +9,7 @@
 
 #ifndef HORIZONTAL_ALIGN_ITEM_HH
 #define HORIZONTAL_ALIGN_ITEM_HH
-#include "elem-group.hh"
+
 #include "item.hh"
 
 /**
diff --git a/lily/include/horizontal-group-elem.hh b/lily/include/horizontal-group-elem.hh
new file mode 100644
index 0000000000..8d3adfb48a
--- /dev/null
+++ b/lily/include/horizontal-group-elem.hh
@@ -0,0 +1,33 @@
+/*   
+  horizontal-group-elem.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1997 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#ifndef HORIZONTAL_GROUP_ELEM_HH
+#define HORIZONTAL_GROUP_ELEM_HH
+
+#include "axis-group-element.hh"
+
+/**
+  Treat a group of elements a unity in horizontal sense .
+  A column is a typical Vertical_group.
+ */
+class Horizontal_group_element : public virtual Axis_group_element {
+protected:
+    virtual void remove_all();
+    virtual Interval do_width() const;
+
+public:
+    DECLARE_MY_RUNTIME_TYPEINFO;
+    virtual void add_element (Graphical_element*);
+    virtual void remove_element (Graphical_element*);
+
+};
+
+
+#endif /* HORIZONTAL_GROUP_ELEM_HH */
+
diff --git a/lily/include/horizontal-group-item.hh b/lily/include/horizontal-group-item.hh
index 10d8106b1d..568c257c64 100644
--- a/lily/include/horizontal-group-item.hh
+++ b/lily/include/horizontal-group-item.hh
@@ -10,7 +10,7 @@
 #ifndef HORIZONTAL_GROUP_ITEM_HH
 #define HORIZONTAL_GROUP_ITEM_HH
 
-#include "elem-group.hh"
+#include "horizontal-group-elem.hh"
 #include "axis-group-item.hh"
 
 /**
diff --git a/lily/include/horizontal-vertical-group-elem.hh b/lily/include/horizontal-vertical-group-elem.hh
new file mode 100644
index 0000000000..9080872395
--- /dev/null
+++ b/lily/include/horizontal-vertical-group-elem.hh
@@ -0,0 +1,35 @@
+/*   
+  horizontal-vertical-group-elem.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1997 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#ifndef HORIZONTAL_VERTICAL_GROUP_ELEM_HH
+#define HORIZONTAL_VERTICAL_GROUP_ELEM_HH
+
+#include "vertical-group-elem.hh"
+#include "horizontal-group-elem.hh"
+
+/** A class to treat a group of elements as a single entity. The
+  dimensions are the unions of the dimensions of what it contains.
+  Translation means translating the contents.
+  */
+class Horizontal_vertical_group_element : public Vertical_group_element, 
+				  public Horizontal_group_element 
+{  
+protected:
+    virtual void remove_all();
+public:
+    virtual void add_element (Graphical_element*);
+    virtual void remove_element (Graphical_element*);
+    
+    DECLARE_MY_RUNTIME_TYPEINFO;    
+};
+
+
+#endif /* HORIZONTAL_VERTICAL_GROUP_ELEM_HH */
+
+
diff --git a/lily/include/horizontal-vertical-group-item.hh b/lily/include/horizontal-vertical-group-item.hh
index 733ff639bd..1aa8c8b82c 100644
--- a/lily/include/horizontal-vertical-group-item.hh
+++ b/lily/include/horizontal-vertical-group-item.hh
@@ -11,7 +11,7 @@
 #define HORIZONTAL_VERTICAL_GROUP_ITEM_HH
 
 #include "axis-group-item.hh"
-#include "elem-group.hh"
+#include "horizontal-vertical-group-elem.hh"
 
 
 /**
diff --git a/lily/include/item.hh b/lily/include/item.hh
index df5b6757ec..64bcca5e70 100644
--- a/lily/include/item.hh
+++ b/lily/include/item.hh
@@ -31,12 +31,12 @@ public:
 
   /// should be put in a breakable col.
   bool breakable_b_;
-  int break_status_i_;
+  Direction break_status_i_;
   int break_priority_i_;
   
   /// nobreak = 0, pre = -1, post = 1
   int break_status_i() const;
-  Item * find_prebroken_piece (int) const;
+  Item * find_prebroken_piece (Direction) const;
   Item * find_prebroken_piece (Line_of_score*) const;    
 
   virtual Item *item() { return this; }
@@ -44,6 +44,7 @@ public:
   Real hpos_f() const;
   DECLARE_MY_RUNTIME_TYPEINFO;
   virtual Line_of_score * line_l() const;
+  virtual Paper_column * column_l () const;
     
   static int left_right_compare (Item const *, Item const*);
 protected:
diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh
index 8f11061320..809bb015ca 100644
--- a/lily/include/lily-proto.hh
+++ b/lily/include/lily-proto.hh
@@ -176,6 +176,8 @@ struct Rhythmic_grouping;
 struct Rhythmic_head;
 struct Rhythmic_grouping_req;
 struct Rhythmic_req;
+struct Single_malt_grouping_item;
+struct Separating_group_spanner;
 struct Score;
 struct Score_column;
 struct Score_elem;
@@ -226,6 +228,7 @@ struct Timing_req;
 struct Vertical_brace;
 struct Vertical_spanner;
 struct Vertical_group_element;
+struct Vertical_group_spanner;
 struct Vertical_align_spanner;
 struct Vertical_align_engraver;
 struct Vertical_align_element;
diff --git a/lily/include/line-group-grav.hh b/lily/include/line-group-grav.hh
index ac57f9ab6a..5316de9a8a 100644
--- a/lily/include/line-group-grav.hh
+++ b/lily/include/line-group-grav.hh
@@ -11,14 +11,18 @@
 #define LINE_GROUP_GRAV_HH
 
 #include "engraver.hh"
+#include "lily-proto.hh"
 
 /**
   Engravers put elements on the same or lowel level in a line
   */
 class Line_group_engraver : public Engraver{
+protected:
+
   Vertical_group_spanner *staffline_p_;   
 
-protected:
+
+  virtual void create_line_spanner ();
   virtual void do_creation_processing();
   virtual void do_removal_processing();
   virtual void acknowledge_element (Score_elem_info);
diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh
index 28fa8d04aa..ff5303d5f6 100644
--- a/lily/include/musical-request.hh
+++ b/lily/include/musical-request.hh
@@ -165,9 +165,9 @@ public:
 class Span_req  : public virtual Musical_req  {
 public:
   /// should the spanner start or stop, or is it unwanted?
-  enum {
+  enum Spantype {
     NOSPAN, START, STOP
-  } spantype ;
+  } spantype;
   bool do_equal_b (Request*) const;
   REQUESTMETHODS(Span_req,span);
 
diff --git a/lily/include/p-col.hh b/lily/include/p-col.hh
index c297bb7843..0a5487a138 100644
--- a/lily/include/p-col.hh
+++ b/lily/include/p-col.hh
@@ -12,6 +12,8 @@
 
 #include "horizontal-group-item.hh"
 #include "plist.hh"
+#include "rod.hh"
+
 
 /**
    stuff grouped vertically.
@@ -30,6 +32,11 @@ class Paper_column : public Horizontal_group_item {
 public:
   DECLARE_MY_RUNTIME_TYPEINFO;
   SCORE_ELEM_CLONE(Paper_column);
+  Drul_array< Array<Column_rod> > minimal_dists_arr_drul_;
+
+  void preprocess ();
+  /// set a minimum distance
+  void add_rod (Paper_column * to, Real distance, Direction d);
   
   /** prebreak is put before end of line.
     if broken here, then (*this) column is discarded, and prebreak
@@ -39,7 +46,8 @@ public:
 
   /// postbreak at beginning of the new line
   Paper_column *postbreak_l() const;
-    
+
+  virtual Paper_column * column_l () const;
   /// if lines are broken then this column is in #line#
   Line_of_score *line_l_;
 
diff --git a/lily/include/rod.hh b/lily/include/rod.hh
new file mode 100644
index 0000000000..42509d453e
--- /dev/null
+++ b/lily/include/rod.hh
@@ -0,0 +1,37 @@
+/*   
+  rod.hh -- declare Rod, Column_rod
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#ifndef ROD_HH
+#define ROD_HH
+#include "lily-proto.hh"
+#include "direction.hh"
+#include "drul-array.hh"
+
+struct Column_rod {
+  Paper_column *other_l_;
+  Real distance_f_;
+  Direction dir_;
+  Column_rod ();
+  static int compare (const Column_rod &r1, const Column_rod &r2);
+  void print () const;
+};
+
+struct Rod
+{
+  Drul_array <Item*> item_l_drul_;
+  Real distance_f_;
+  void add_to_cols ();
+
+  Rod (Item*,Item*);
+  Rod ();
+};
+
+
+#endif /* ROD_HH */
+
diff --git a/lily/include/score-elem.hh b/lily/include/score-elem.hh
index 64ec7fcbe1..5757d074e8 100644
--- a/lily/include/score-elem.hh
+++ b/lily/include/score-elem.hh
@@ -97,6 +97,9 @@ protected:
   /// do calculations before determining horizontal spacing
   virtual void do_pre_processing();
 
+  /// generate rods & springs
+  virtual void do_space_processing ();
+
   virtual void do_breakable_col_processing();
   /// do calculations after determining horizontal spacing
   virtual void do_post_processing();
diff --git a/lily/include/separating-group-spanner.hh b/lily/include/separating-group-spanner.hh
new file mode 100644
index 0000000000..6ec7d0f8e3
--- /dev/null
+++ b/lily/include/separating-group-spanner.hh
@@ -0,0 +1,29 @@
+/*   
+  separating-group-spanner.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#ifndef SEPARATING_GROUP_SPANNER_HH
+#define SEPARATING_GROUP_SPANNER_HH
+
+#include "vertical-group-spanner.hh"
+
+
+class Separating_group_spanner : public Spanner
+{
+  Link_array<Single_malt_grouping_item> spacing_unit_l_arr_;
+public:
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  void add_spacing_unit (Single_malt_grouping_item*);
+protected:
+  SCORE_ELEM_CLONE (Separating_group_spanner);
+  virtual Array<Rod> get_rods () const;
+  virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+};
+
+#endif /* SEPARATING_GROUP_SPANNER_HH */
+
diff --git a/lily/include/separating-line-group-grav.hh b/lily/include/separating-line-group-grav.hh
new file mode 100644
index 0000000000..17e83aa54a
--- /dev/null
+++ b/lily/include/separating-line-group-grav.hh
@@ -0,0 +1,34 @@
+/*   
+  separating-line-group-grav.hh -- declare Separating_line_group_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#ifndef SEPARATING_LINE_GROUP_GRAV_HH
+#define SEPARATING_LINE_GROUP_GRAV_HH
+
+#include "line-group-grav.hh"
+
+class Separating_line_group_engraver : public Line_group_engraver
+{
+protected:
+  Single_malt_grouping_item * break_malt_p_;
+  Single_malt_grouping_item* nobreak_malt_p_;
+  Separating_group_spanner * sep_span_p_;
+  
+  virtual void acknowledge_element (Score_elem_info);
+  virtual void do_creation_processing ();
+  virtual void do_removal_processing ();
+  virtual void do_pre_move_processing ();
+public:
+  Separating_line_group_engraver ();
+  TRANSLATOR_CLONE (Separating_line_group_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+
+#endif /* SEPARATING_LINE_GROUP_GRAV_HH */
+
diff --git a/lily/include/single-malt-grouping-item.hh b/lily/include/single-malt-grouping-item.hh
new file mode 100644
index 0000000000..4b74897022
--- /dev/null
+++ b/lily/include/single-malt-grouping-item.hh
@@ -0,0 +1,35 @@
+/*   
+  single-malt-grouping-item.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1997 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#ifndef SINGLE_MALT_GROUPING_ITEM_HH
+#define SINGLE_MALT_GROUPING_ITEM_HH
+
+#include "item.hh"
+
+/** Calc dimensions for the Separating_group_spanner; this has to be
+   an itme to get dependencies correct.  It can't be an element_group
+   since these usually are in a different X_group 
+
+   It's 1 30 am.  Naming suggestions appreciated.  */
+class Single_malt_grouping_item : public Item
+{
+  SCORE_ELEM_CLONE (Single_malt_grouping_item);
+  Link_array<Item> item_l_arr_;
+public:
+  Single_malt_grouping_item ();
+  Interval do_width () const;
+  void add (Item*);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+protected:
+  virtual  void do_substitute_dependency (Score_elem*, Score_elem*);
+
+};
+
+#endif /* SINGLE_MALT_GROUPING_ITEM_HH */
+
diff --git a/lily/include/spanner.hh b/lily/include/spanner.hh
index ad205fcbf0..0559dce40d 100644
--- a/lily/include/spanner.hh
+++ b/lily/include/spanner.hh
@@ -10,6 +10,7 @@
 #include "lily-proto.hh"
 #include "score-elem.hh"
 #include "drul-array.hh"
+#include "rod.hh"
 
 /** A symbol which is attached between two columns. A spanner is a
   symbol which spans across several columns, so its final appearance
@@ -41,7 +42,7 @@ public:
   virtual Spanner* spanner() { return this; }    
   Spanner();
   bool broken_b() const;
-
+  virtual Array<Rod> get_rods () const;
   Spanner* find_broken_piece (Line_of_score*) const;
 protected:
   void set_my_columns();
@@ -57,6 +58,7 @@ protected:
   virtual void do_unlink();
   virtual void do_junk_links();
   virtual void do_brew_molecule ();
+  virtual void do_space_processing ();
   virtual void do_break_processing();
   virtual Interval do_width() const;
   virtual void do_print() const;
diff --git a/lily/include/spring-spacer.hh b/lily/include/spring-spacer.hh
index 04c9184f56..ffd59f5f68 100644
--- a/lily/include/spring-spacer.hh
+++ b/lily/include/spring-spacer.hh
@@ -69,6 +69,7 @@ class Spring_spacer : public Line_spacer {
 
   void handle_loose_cols();
   void position_loose_cols (Vector &) const;
+  bool try_initial_solution_and_tell (Vector&)const;
   Vector try_initial_solution() const;
   void calc_idealspacing();
   void set_fixed_cols (Mixed_qp&) const;
diff --git a/lily/include/super-elem.hh b/lily/include/super-elem.hh
index 74bfda6691..e5e4393887 100644
--- a/lily/include/super-elem.hh
+++ b/lily/include/super-elem.hh
@@ -21,6 +21,7 @@ public:
     void add_broken_line (Line_of_score*);
   Super_elem();
 
+  void space_processing ();
   void pre_processing();
   void breakable_col_processing();
   void break_processing();
diff --git a/lily/include/text-def.hh b/lily/include/text-def.hh
index 6624959140..13fb25511b 100644
--- a/lily/include/text-def.hh
+++ b/lily/include/text-def.hh
@@ -15,27 +15,27 @@
 class Text_def : public General_script_def 
 {
 public:
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    VIRTUAL_COPY_CONS(Text_def,General_script_def);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Text_def,General_script_def);
 
-    /**
-      centered , or aligned?
+  /**
+     centered , or aligned?
 
-      -1 = raggedright, 0 = center, 1 = raggedleft
-     */
-    Direction align_i_;
+     -1 = raggedright, 0 = center, 1 = raggedleft
+  */
+  Direction align_i_;
 
-    String text_str_;
-    String style_str_;
+  String text_str_;
+  String style_str_;
     
-    virtual void do_print() const;
-    virtual Direction staff_dir() const;
-    virtual Atom get_atom (Paper_def* p, Direction dir_) const;
-    virtual ~Text_def() {};
-    virtual bool do_equal_b (const General_script_def*) const;
-    Text_def();
-    virtual void print() const;
-    Interval width (Paper_def*) const;
+  virtual void do_print() const;
+  virtual Direction staff_dir() const;
+  virtual Atom get_atom (Paper_def* p, Direction dir_) const;
+  virtual ~Text_def() {};
+  virtual bool do_equal_b (const General_script_def*) const;
+  Text_def();
+  virtual void print() const;
+  virtual Interval width (Paper_def*) const;
 };
 
 #endif // TEXT_DEF_HH
diff --git a/lily/include/vertical-align-elem.hh b/lily/include/vertical-align-elem.hh
index bb6b7ed48f..a01e2c5164 100644
--- a/lily/include/vertical-align-elem.hh
+++ b/lily/include/vertical-align-elem.hh
@@ -10,7 +10,7 @@
 #ifndef VERTICAL_ALIGN_ITEM_HH
 #define VERTICAL_ALIGN_ITEM_HH
 
-#include "elem-group.hh"
+#include "score-elem.hh"
 
 /**
   Order elements top to bottom.
diff --git a/lily/include/vertical-group-elem.hh b/lily/include/vertical-group-elem.hh
new file mode 100644
index 0000000000..5e46c66fd5
--- /dev/null
+++ b/lily/include/vertical-group-elem.hh
@@ -0,0 +1,29 @@
+/*   
+  vertical-group-elem.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1997 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#ifndef VERTICAL_GROUP_ELEM_HH
+#define VERTICAL_GROUP_ELEM_HH
+
+#include "axis-group-element.hh"
+/**
+  Like Horizontal_group_element, but in X direction
+ */
+class Vertical_group_element : public virtual Axis_group_element {
+protected:
+    virtual Interval do_height() const;
+    virtual void remove_all();
+
+public:
+    virtual void add_element (Graphical_element*);
+    virtual void remove_element (Graphical_element*);
+    DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif /* VERTICAL_GROUP_ELEM_HH */
+
diff --git a/lily/include/vertical-group-spanner.hh b/lily/include/vertical-group-spanner.hh
index 3c9ef948bc..405c65a0b7 100644
--- a/lily/include/vertical-group-spanner.hh
+++ b/lily/include/vertical-group-spanner.hh
@@ -11,7 +11,7 @@
 #define SPAN_VERTICAL_GROUP_HH
 
 #include "axis-group-spanner.hh"
-#include "elem-group.hh"
+#include "vertical-group-elem.hh"
 
 /** An element which groups a line. 
  */
@@ -28,4 +28,5 @@ public:
   virtual void remove_element (Graphical_element*e) { Vertical_group_element::remove_element (e); }  
 };
 
+
 #endif // SPAN_VERTICAL_GROUP_HH
diff --git a/lily/item.cc b/lily/item.cc
index daaf880a96..11d4568635 100644
--- a/lily/item.cc
+++ b/lily/item.cc
@@ -10,14 +10,14 @@
 #include "debug.hh"
 #include "item.hh"
 #include "p-col.hh"
-#include "elem-group.hh"
+// #include "elem-group.hh"
 #include "spanner.hh"
 
 Item::Item()
 {
   break_priority_i_ = 0;
   breakable_b_ = false;
-  break_status_i_ = 0;
+  break_status_i_ = CENTER;
   broken_to_drul_[LEFT] = broken_to_drul_[RIGHT]=0;
 }
 
@@ -67,7 +67,7 @@ Item::copy_breakable_items()
       item_p->handle_prebroken_dependencies();
       new_copies[i] =item_p;
     }
-  while ((i *= -1) != LEFT);
+  while (flip(&i) != LEFT);
   broken_to_drul_= new_copies;
 }
 
@@ -102,12 +102,12 @@ Item::find_prebroken_piece (Line_of_score*l) const
 }
 
 Item*
-Item::find_prebroken_piece (int breakstatus) const
+Item::find_prebroken_piece (Direction breakstatus) const
 {
   if (!breakstatus)
     return (Item *) this;	// ugh
   else
-    return (Item*) broken_to_drul_[(Direction)breakstatus];
+    return (Item*) broken_to_drul_[breakstatus];
 }
 
 void
@@ -158,3 +158,9 @@ Item::do_unlink()
   }
   attached_span_l_arr_.set_size (0);
 }
+
+Paper_column *
+Item::column_l () const
+{
+  return axis_group_l_a_[X_AXIS]->item ()->column_l ();
+}
diff --git a/lily/leastsquares.cc b/lily/leastsquares.cc
index ab718a97f7..0f1568f29f 100644
--- a/lily/leastsquares.cc
+++ b/lily/leastsquares.cc
@@ -1,4 +1,5 @@
 #include "leastsquares.hh"
+
 void
 Least_squares::OK() const
 {
@@ -9,6 +10,7 @@ Least_squares::OK() const
 
   assert (dx);
 }
+
 void
 Least_squares::minimise (Real &coef, Real &offset)
 {
diff --git a/lily/line-group-grav.cc b/lily/line-group-grav.cc
index a975b75cc6..465a23d819 100644
--- a/lily/line-group-grav.cc
+++ b/lily/line-group-grav.cc
@@ -23,7 +23,7 @@ void
 Line_group_engraver::acknowledge_element (Score_elem_info  elem)
 {
   if (!elem.elem_l_->axis_group_l_a_[Y_AXIS])
-	staffline_p_->add_element (elem.elem_l_);
+    staffline_p_->add_element (elem.elem_l_);
 }
 
 
@@ -38,13 +38,19 @@ Line_group_engraver::do_removal_processing()
 void
 Line_group_engraver::do_creation_processing()
 {
-  staffline_p_ = new Vertical_group_spanner ;
+  create_line_spanner ();
   staffline_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
 
   // don't broadcast to self.
   announce_element (Score_elem_info (staffline_p_,0));
 }
 
+void
+Line_group_engraver::create_line_spanner ()
+{
+  staffline_p_ = new Vertical_group_spanner ;
+}
+
 
 
 IMPLEMENT_IS_TYPE_B1(Line_group_engraver,Engraver);
diff --git a/lily/line-spacer.cc b/lily/line-spacer.cc
index 6f9c317fd9..3e518e022c 100644
--- a/lily/line-spacer.cc
+++ b/lily/line-spacer.cc
@@ -1,5 +1,5 @@
 /*
-  line-spacer.cc -- implement 
+  line-spacer.cc -- implement Line_spacer
 
   source file of the GNU LilyPond music typesetter
 
diff --git a/lily/musical-request.cc b/lily/musical-request.cc
index bc46309810..c84b92ee0f 100644
--- a/lily/musical-request.cc
+++ b/lily/musical-request.cc
@@ -207,7 +207,7 @@ Rhythmic_req::duration() const
 Lyric_req::Lyric_req (Text_def* def_p)
   :Text_req (0, def_p)
 {
-  def_p->align_i_ = 0;	// centre
+  def_p->align_i_ = CENTER;	// centre
   dir_ = DOWN;		// lyrics below (invisible) staff
 }
 
diff --git a/lily/p-col.cc b/lily/p-col.cc
index 06fae0d37f..898c7357ab 100644
--- a/lily/p-col.cc
+++ b/lily/p-col.cc
@@ -10,6 +10,28 @@
 #include "p-score.hh"
 #include "debug.hh"
 
+void
+Paper_column::add_rod (Paper_column * p, Real d, Direction dir)
+{
+  assert( sign (p->rank_i ()  - rank_i ()) == dir);
+  for (int i=0; i < minimal_dists_arr_drul_[dir].size (); i++)
+    {
+      Column_rod &rod = minimal_dists_arr_drul_[dir][i];
+      if (rod.other_l_ == p)
+	{
+	  rod.distance_f_ = rod.distance_f_ >? d;
+	  return ;
+	}
+    }
+
+  Column_rod cr;
+  cr.distance_f_ = d;
+  cr.other_l_ = p;
+  cr.dir_ = dir;
+
+  minimal_dists_arr_drul_[dir].push (cr);
+      
+}
 
 int
 Paper_column::rank_i() const
@@ -44,10 +66,15 @@ Paper_column::do_print() const
     } 
   if (break_status_i_)
     {
-      DOUT <<'\n' << ((break_status_i_ == -1)? "prebreak" : "postbreak");
+      DOUT <<'\n' << ((break_status_i_ == LEFT) ? "prebreak" : "postbreak");
       DOUT << '\n';
     }
   // DOUT << "extent: " << width().str () << "\n";
+
+  for (int i=0; i < minimal_dists_arr_drul_[RIGHT].size (); i++)
+    {
+      minimal_dists_arr_drul_[RIGHT][i].print ();
+    }
 #endif 
 }
 
@@ -96,3 +123,16 @@ Paper_column::used_b() const
 
 IMPLEMENT_IS_TYPE_B1(Paper_column, Horizontal_group_item);
 
+Paper_column*
+Paper_column::column_l () const
+{
+  return (Paper_column*)this;
+}
+
+
+void
+Paper_column::preprocess ()
+{
+  minimal_dists_arr_drul_[LEFT].sort (Column_rod::compare);
+  minimal_dists_arr_drul_[RIGHT].sort (Column_rod::compare);  
+}
diff --git a/lily/p-score.cc b/lily/p-score.cc
index 437efdc694..e53985fa4e 100644
--- a/lily/p-score.cc
+++ b/lily/p-score.cc
@@ -25,8 +25,8 @@
 #include "outputter.hh"
 
 // sucking Cygnus egcs - w32
-#include "plist.tcc"
-#include "pcursor.tcc"
+#include "list.tcc"
+#include "cursor.tcc"
 
 Paper_score::Paper_score ()
 {
@@ -185,7 +185,9 @@ Paper_score::process ()
   *mlog << _("Preprocessing elements... ") <<flush;
   super_elem_l_->breakable_col_processing ();
   super_elem_l_->pre_processing ();
+  
   *mlog << _("\nCalculating column positions ... ") <<flush;
+  super_elem_l_->space_processing ();
   calc_breaking ();
   *mlog << _("\nPostprocessing elements...") << endl;
   super_elem_l_->post_processing ();
diff --git a/lily/parser.cc b/lily/parser.cc
index 7c9149b7e5..584b05711b 100644
--- a/lily/parser.cc
+++ b/lily/parser.cc
@@ -128,6 +128,9 @@
 #include "duration-convert.hh"
 #include "change-translator.hh"
 
+// needed for bison.simple's malloc() and free()
+#include <malloc.h>
+
 int const GUESS_PLET = 5;
 int guess_plet_a[GUESS_PLET] =
 { 
@@ -151,7 +154,7 @@ int guess_plet_a[GUESS_PLET] =
 #define yyerror THIS->parser_error
 
 
-#line 68 "parser.yy"
+#line 71 "parser.yy"
 typedef union {
     Array<Interval>* intarr;
     Array<Melodic_req*> *melreqvec;/* should clean up naming */
@@ -191,7 +194,7 @@ typedef union {
     int pair[2];
     int ii[10];
 } YYSTYPE;
-#line 107 "parser.yy"
+#line 110 "parser.yy"
 
 
 int
@@ -355,29 +358,29 @@ static const short yyrhs[] = {    -1,
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   258,   259,   263,   266,   267,   268,   269,   272,   285,   288,
-   291,   294,   300,   304,   311,   318,   322,   331,   335,   342,
-   347,   351,   355,   359,   363,   367,   371,   374,   377,   381,
-   384,   391,   396,   401,   406,   411,   415,   424,   428,   442,
-   445,   448,   451,   456,   459,   464,   468,   473,   475,   484,
-   489,   493,   496,   500,   501,   504,   507,   511,   515,   520,
-   524,   531,   537,   540,   544,   548,   552,   557,   570,   576,
-   581,   586,   588,   593,   600,   601,   602,   603,   604,   605,
-   608,   610,   613,   614,   615,   618,   631,   645,   647,   651,
-   653,   659,   665,   670,   683,   688,   689,   692,   694,   697,
-   707,   709,   712,   716,   721,   726,   731,   736,   744,   747,
-   750,   754,   758,   764,   769,   778,   782,   791,   793,   796,
-   800,   803,   815,   820,   823,   829,   835,   841,   850,   858,
-   864,   872,   877,   885,   893,   900,   909,   913,   916,   919,
-   922,   925,   929,   941,   949,   958,   962,   965,   968,   970,
-   976,   980,   989,  1000,  1005,  1009,  1015,  1026,  1036,  1038,
-  1039,  1040,  1041,  1042,  1043,  1048,  1050,  1051,  1057,  1059,
-  1060,  1063,  1066,  1075,  1080,  1084,  1094,  1098,  1104,  1108,
-  1113,  1115,  1118,  1122,  1126,  1132,  1138,  1148,  1151,  1154,
-  1157,  1163,  1167,  1177,  1185,  1191,  1203,  1206,  1211,  1215,
-  1219,  1223,  1226,  1233,  1237,  1246,  1251,  1252,  1253,  1254,
-  1260,  1264,  1268,  1271,  1275,  1281,  1285,  1287,  1294,  1300,
-  1307,  1315
+   261,   262,   266,   269,   270,   271,   272,   275,   288,   291,
+   294,   297,   303,   307,   314,   321,   325,   334,   338,   345,
+   350,   354,   358,   362,   366,   370,   374,   377,   380,   384,
+   387,   394,   399,   404,   409,   414,   418,   427,   431,   445,
+   448,   451,   454,   459,   462,   467,   471,   476,   478,   487,
+   492,   496,   499,   503,   504,   507,   510,   514,   518,   523,
+   527,   534,   540,   543,   547,   551,   555,   560,   573,   579,
+   584,   589,   591,   596,   603,   604,   605,   606,   607,   608,
+   611,   613,   616,   617,   618,   621,   634,   648,   650,   654,
+   656,   662,   668,   673,   686,   691,   692,   695,   697,   700,
+   710,   712,   715,   719,   724,   729,   734,   739,   747,   750,
+   753,   757,   761,   767,   772,   781,   785,   794,   796,   799,
+   803,   806,   818,   823,   826,   832,   838,   844,   853,   861,
+   867,   875,   880,   888,   896,   903,   912,   916,   919,   922,
+   925,   928,   932,   944,   952,   961,   965,   968,   971,   973,
+   979,   983,   992,  1003,  1008,  1012,  1018,  1029,  1039,  1041,
+  1042,  1043,  1044,  1045,  1046,  1051,  1053,  1054,  1060,  1062,
+  1063,  1066,  1069,  1078,  1083,  1087,  1097,  1101,  1107,  1111,
+  1116,  1118,  1121,  1125,  1129,  1135,  1141,  1151,  1154,  1157,
+  1160,  1166,  1170,  1180,  1188,  1194,  1206,  1209,  1214,  1218,
+  1222,  1226,  1229,  1236,  1240,  1249,  1254,  1255,  1256,  1257,
+  1263,  1267,  1271,  1274,  1278,  1284,  1288,  1290,  1297,  1303,
+  1310,  1318
 };
 #endif
 
@@ -1220,32 +1223,32 @@ yyreduce:
   switch (yyn) {
 
 case 2:
-#line 259 "parser.yy"
+#line 262 "parser.yy"
 {
 		delete THIS->default_header_p_ ;
 		THIS->default_header_p_ = yyvsp[0].header;
 	;
     break;}
 case 3:
-#line 263 "parser.yy"
+#line 266 "parser.yy"
 {
 		add_score (yyvsp[0].score);
 	;
     break;}
 case 4:
-#line 266 "parser.yy"
+#line 269 "parser.yy"
 { ;
     break;}
 case 6:
-#line 268 "parser.yy"
+#line 271 "parser.yy"
 { ;
     break;}
 case 7:
-#line 269 "parser.yy"
+#line 272 "parser.yy"
 { ;
     break;}
 case 8:
-#line 273 "parser.yy"
+#line 276 "parser.yy"
 {
 		if (String (*yyvsp[-1].string) != MUDELA_VERSION) {
 			if (THIS->ignore_version_b_) {
@@ -1258,31 +1261,31 @@ case 8:
 	;
     break;}
 case 10:
-#line 289 "parser.yy"
+#line 292 "parser.yy"
 {
 	;
     break;}
 case 11:
-#line 291 "parser.yy"
+#line 294 "parser.yy"
 {
 		THIS->clear_notenames ();
 	;
     break;}
 case 12:
-#line 294 "parser.yy"
+#line 297 "parser.yy"
 {
 		THIS->add_notename (*yyvsp[-2].string, yyvsp[0].melreq);
 		delete yyvsp[-2].string;
 	;
     break;}
 case 13:
-#line 301 "parser.yy"
+#line 304 "parser.yy"
 {
 		yyval.header = new Header;
 	;
     break;}
 case 14:
-#line 304 "parser.yy"
+#line 307 "parser.yy"
 {
 		(*yyval.header)[*yyvsp[-3].string] = *yyvsp[-1].string;
 		delete yyvsp[-3].string;
@@ -1290,31 +1293,31 @@ case 14:
 	;
     break;}
 case 15:
-#line 312 "parser.yy"
+#line 315 "parser.yy"
 {
 		yyval.header = yyvsp[-1].header;
 	;
     break;}
 case 16:
-#line 319 "parser.yy"
+#line 322 "parser.yy"
 {
 		yyval.string = new String;
 	;
     break;}
 case 17:
-#line 322 "parser.yy"
+#line 325 "parser.yy"
 {
 		*yyval.string += *yyvsp[0].string;
 	;
     break;}
 case 18:
-#line 332 "parser.yy"
+#line 335 "parser.yy"
 {
 		THIS->remember_spot ();
 	;
     break;}
 case 19:
-#line 335 "parser.yy"
+#line 338 "parser.yy"
 {
 	    THIS->lexer_p_->set_identifier (*yyvsp[-3].string, yyvsp[0].id);
 	    yyvsp[0].id->init_b_ = THIS->init_parse_b_;
@@ -1322,98 +1325,98 @@ case 19:
 	;
     break;}
 case 20:
-#line 343 "parser.yy"
+#line 346 "parser.yy"
 {
 		yyval.id = new Score_id (yyvsp[0].score, SCORE_IDENTIFIER);
 
 	;
     break;}
 case 21:
-#line 347 "parser.yy"
+#line 350 "parser.yy"
 {
 		yyval.id = new Paper_def_id (yyvsp[0].paper, PAPER_IDENTIFIER);
 
 	;
     break;}
 case 22:
-#line 351 "parser.yy"
+#line 354 "parser.yy"
 {
 		yyval.id = new Midi_def_id (yyvsp[0].midi, MIDI_IDENTIFIER);
 
 	;
     break;}
 case 23:
-#line 355 "parser.yy"
+#line 358 "parser.yy"
 {
 		yyval.id = new Script_id (yyvsp[0].script, SCRIPT_IDENTIFIER);
 
 	;
     break;}
 case 24:
-#line 359 "parser.yy"
+#line 362 "parser.yy"
 {
 		yyval.id = new Music_id (yyvsp[0].music, MUSIC_IDENTIFIER);
 
 	;
     break;}
 case 25:
-#line 363 "parser.yy"
+#line 366 "parser.yy"
 {
 		yyval.id = new Lookup_id (yyvsp[0].lookup, IDENTIFIER);
 
 	;
     break;}
 case 26:
-#line 367 "parser.yy"
+#line 370 "parser.yy"
 {
 		yyval.id = new Real_id (new Real (yyvsp[0].real), REAL_IDENTIFIER);
 
 	;
     break;}
 case 27:
-#line 371 "parser.yy"
+#line 374 "parser.yy"
 {
 		yyval.id = new Int_id (new int (yyvsp[0].i), INT_IDENTIFIER);
 	;
     break;}
 case 28:
-#line 374 "parser.yy"
+#line 377 "parser.yy"
 {
 		yyval.id = new Request_id (yyvsp[0].request, POST_REQUEST_IDENTIFIER);
 	;
     break;}
 case 29:
-#line 377 "parser.yy"
+#line 380 "parser.yy"
 {
 		yyval.id = new Request_id (yyvsp[0].melreq, MELODIC_REQUEST_IDENTIFIER);
 
 	;
     break;}
 case 30:
-#line 381 "parser.yy"
+#line 384 "parser.yy"
 {
 		yyval.id = new Translator_id (yyvsp[0].trans, TRANS_IDENTIFIER);
 	;
     break;}
 case 31:
-#line 384 "parser.yy"
+#line 387 "parser.yy"
 {
 		yyval.id = new Duration_id (yyvsp[0].duration, DURATION_IDENTIFIER);
 	;
     break;}
 case 32:
-#line 393 "parser.yy"
+#line 396 "parser.yy"
 { yyval.trans = yyvsp[-1].trans; ;
     break;}
 case 33:
-#line 397 "parser.yy"
+#line 400 "parser.yy"
 {
 		yyval.trans = yyvsp[0].id->translator ();
 		yyval.trans-> set_spot (THIS->here_input ());
 	;
     break;}
 case 34:
-#line 401 "parser.yy"
+#line 404 "parser.yy"
 {
 		yyval.trans = get_translator_l (*yyvsp[-1].string)->clone ();
 		yyval.trans->set_spot (THIS->here_input ());
@@ -1421,7 +1424,7 @@ case 34:
 	;
     break;}
 case 35:
-#line 406 "parser.yy"
+#line 409 "parser.yy"
 {
 		yyval.trans-> set_property (*yyvsp[-3].string, *yyvsp[-1].scalar);
 		delete yyvsp[-3].string;
@@ -1429,27 +1432,27 @@ case 35:
 	;
     break;}
 case 36:
-#line 411 "parser.yy"
+#line 414 "parser.yy"
 {
 		yyval.trans->group_l ()->consists_str_arr_.push (*yyvsp[-1].string);
 		delete yyvsp[-1].string;
 	;
     break;}
 case 37:
-#line 415 "parser.yy"
+#line 418 "parser.yy"
 {
 		yyval.trans->group_l ()->accepts_str_arr_.push (*yyvsp[-1].string);
 		delete yyvsp[-1].string;
 	;
     break;}
 case 38:
-#line 425 "parser.yy"
+#line 428 "parser.yy"
 { THIS->remember_spot ();
 		THIS->error_level_i_ =0;
 	;
     break;}
 case 39:
-#line 428 "parser.yy"
+#line 431 "parser.yy"
 {
 		yyval.score = yyvsp[-1].score;
 		yyval.score->set_spot (THIS->pop_spot ());
@@ -1464,25 +1467,25 @@ case 39:
 	;
     break;}
 case 40:
-#line 442 "parser.yy"
+#line 445 "parser.yy"
 {
 		yyval.score = new Score;
 	;
     break;}
 case 41:
-#line 445 "parser.yy"
+#line 448 "parser.yy"
 {
 		yyval.score = yyvsp[0].id->score ();
 	;
     break;}
 case 42:
-#line 448 "parser.yy"
+#line 451 "parser.yy"
 {
 		yyval.score->header_p_ = yyvsp[0].header;
 	;
     break;}
 case 43:
-#line 451 "parser.yy"
+#line 454 "parser.yy"
 {
 		if (yyval.score->music_p_)
 			yyvsp[0].music->warning ("More than one music block");	
@@ -1490,149 +1493,149 @@ case 43:
 	;
     break;}
 case 44:
-#line 456 "parser.yy"
+#line 459 "parser.yy"
 {
 		yyval.score->add (yyvsp[0].outputdef);
 	;
     break;}
 case 45:
-#line 459 "parser.yy"
+#line 462 "parser.yy"
 {
 
 	;
     break;}
 case 46:
-#line 465 "parser.yy"
+#line 468 "parser.yy"
 {
 		yyval.outputdef = yyvsp[0].paper;
 	;
     break;}
 case 47:
-#line 468 "parser.yy"
+#line 471 "parser.yy"
 {
 		yyval.outputdef= yyvsp[0].midi;
 	;
     break;}
 case 48:
-#line 474 "parser.yy"
+#line 477 "parser.yy"
 { yyval.intvec =new Array<int>; ;
     break;}
 case 49:
-#line 475 "parser.yy"
+#line 478 "parser.yy"
 {
 		yyval.intvec->push (yyvsp[-2].i); yyval.intvec->push (yyvsp[0].i);
 	;
     break;}
 case 50:
-#line 486 "parser.yy"
+#line 489 "parser.yy"
 { yyval.paper = yyvsp[-1].paper; ;
     break;}
 case 51:
-#line 490 "parser.yy"
+#line 493 "parser.yy"
 {
 		yyval.paper = THIS->default_paper ();
 	;
     break;}
 case 52:
-#line 493 "parser.yy"
+#line 496 "parser.yy"
 {
 		yyval.paper = yyvsp[0].id->paperdef ();
 	;
     break;}
 case 53:
-#line 496 "parser.yy"
+#line 499 "parser.yy"
 { 
 		yyval.paper->outfile_str_ = *yyvsp[-1].string;
 		delete yyvsp[-1].string;
 	;
     break;}
 case 54:
-#line 500 "parser.yy"
+#line 503 "parser.yy"
 { yyval.paper->set (yyvsp[0].lookup); ;
     break;}
 case 55:
-#line 501 "parser.yy"
+#line 504 "parser.yy"
 {
 		yyval.paper->set_var (*yyvsp[-3].string, yyvsp[-1].real);
 	;
     break;}
 case 56:
-#line 504 "parser.yy"
+#line 507 "parser.yy"
 {
 		yyval.paper->set_var (*yyvsp[-3].string, yyvsp[-1].real);
 	;
     break;}
 case 57:
-#line 507 "parser.yy"
+#line 510 "parser.yy"
 {
 		yyval.paper-> assign_translator (*yyvsp[-2].string, yyvsp[0].trans);
 		delete yyvsp[-2].string;
 	;
     break;}
 case 58:
-#line 511 "parser.yy"
+#line 514 "parser.yy"
 {
 		yyval.paper->shape_int_a_ = *yyvsp[-1].intarr;
 		delete yyvsp[-1].intarr;
 	;
     break;}
 case 59:
-#line 515 "parser.yy"
+#line 518 "parser.yy"
 {
 
 	;
     break;}
 case 60:
-#line 521 "parser.yy"
+#line 524 "parser.yy"
 {
 		yyval.intarr = new Array<Interval>;
 	;
     break;}
 case 61:
-#line 524 "parser.yy"
+#line 527 "parser.yy"
 {
 		yyval.intarr->push(Interval(yyvsp[-1].real, yyvsp[-1].real + yyvsp[0].real));
 	;
     break;}
 case 62:
-#line 534 "parser.yy"
+#line 537 "parser.yy"
 { yyval.midi = yyvsp[-1].midi; ;
     break;}
 case 63:
-#line 537 "parser.yy"
+#line 540 "parser.yy"
 {
 		yyval.midi = THIS->default_midi ();
 	;
     break;}
 case 64:
-#line 540 "parser.yy"
+#line 543 "parser.yy"
 {
 		yyval.midi-> assign_translator (*yyvsp[-2].string, yyvsp[0].trans);
 		delete yyvsp[-2].string;
 	;
     break;}
 case 65:
-#line 544 "parser.yy"
+#line 547 "parser.yy"
 {
 		yyval.midi->outfile_str_ = *yyvsp[-1].string;
 		delete yyvsp[-1].string;
 	;
     break;}
 case 66:
-#line 548 "parser.yy"
+#line 551 "parser.yy"
 {
 		yyval.midi->set_tempo (yyvsp[-1].tempo->dur_.length (), yyvsp[-1].tempo->metronome_i_);
 		delete yyvsp[-1].tempo;
 	;
     break;}
 case 67:
-#line 552 "parser.yy"
+#line 555 "parser.yy"
 {
 
 	;
     break;}
 case 68:
-#line 558 "parser.yy"
+#line 561 "parser.yy"
 {
 		yyval.tempo = new Tempo_req;
 		yyval.tempo->dur_ = *yyvsp[-2].duration;
@@ -1641,30 +1644,30 @@ case 68:
 	;
     break;}
 case 69:
-#line 571 "parser.yy"
+#line 574 "parser.yy"
 {
 		yyval.musiclist = yyvsp[-1].musiclist;
 	;
     break;}
 case 70:
-#line 577 "parser.yy"
+#line 580 "parser.yy"
 {
 		yyval.musiclist = new Voice;
 		yyval.musiclist->set_spot (THIS->here_input ());
 	;
     break;}
 case 71:
-#line 581 "parser.yy"
+#line 584 "parser.yy"
 {
 		yyval.musiclist->add (yyvsp[0].music);
 	;
     break;}
 case 72:
-#line 587 "parser.yy"
+#line 590 "parser.yy"
 { yyval.music = yyvsp[0].music; ;
     break;}
 case 73:
-#line 588 "parser.yy"
+#line 591 "parser.yy"
 {
 		yyval.music = yyvsp[0].music;
 		yyval.music->translator_type_str_ = *yyvsp[-1].string;
@@ -1672,7 +1675,7 @@ case 73:
 	;
     break;}
 case 74:
-#line 593 "parser.yy"
+#line 596 "parser.yy"
 {
 		yyval.music = yyvsp[0].music;
 		yyval.music->translator_type_str_ = *yyvsp[-3].string;
@@ -1682,43 +1685,43 @@ case 74:
 	;
     break;}
 case 75:
-#line 600 "parser.yy"
+#line 603 "parser.yy"
 { yyval.music = yyvsp[0].musiclist; ;
     break;}
 case 76:
-#line 601 "parser.yy"
+#line 604 "parser.yy"
 { yyval.music = yyvsp[0].chord; ;
     break;}
 case 77:
-#line 602 "parser.yy"
+#line 605 "parser.yy"
 { yyval.music = yyvsp[0].music; ;
     break;}
 case 78:
-#line 603 "parser.yy"
+#line 606 "parser.yy"
 { yyval.music = yyvsp[0].id->music (); ;
     break;}
 case 79:
-#line 604 "parser.yy"
+#line 607 "parser.yy"
 { yyval.music = yyvsp[-1].id->music (); ;
     break;}
 case 80:
-#line 606 "parser.yy"
+#line 609 "parser.yy"
 { THIS->lexer_p_->push_note_state (); ;
     break;}
 case 81:
-#line 608 "parser.yy"
+#line 611 "parser.yy"
 { yyval.music=yyvsp[0].music; THIS->lexer_p_->pop_state (); ;
     break;}
 case 82:
-#line 611 "parser.yy"
+#line 614 "parser.yy"
 { THIS->lexer_p_->push_lyric_state (); ;
     break;}
 case 83:
-#line 613 "parser.yy"
+#line 616 "parser.yy"
 { yyval.music = yyvsp[0].music; THIS->lexer_p_->pop_state (); ;
     break;}
 case 86:
-#line 619 "parser.yy"
+#line 622 "parser.yy"
 {
 		Change_translator * t = new Change_translator;
 		t-> change_to_type_str_ = *yyvsp[-2].string;
@@ -1731,7 +1734,7 @@ case 86:
 	;
     break;}
 case 87:
-#line 632 "parser.yy"
+#line 635 "parser.yy"
 {
 		Translation_property *t = new Translation_property;
 		t-> translator_type_str_ = *yyvsp[-4].string;
@@ -1745,26 +1748,26 @@ case 87:
 	;
     break;}
 case 88:
-#line 646 "parser.yy"
+#line 649 "parser.yy"
 { yyval.scalar = new Scalar (*yyvsp[0].string); delete yyvsp[0].string; ;
     break;}
 case 89:
-#line 647 "parser.yy"
+#line 650 "parser.yy"
 { yyval.scalar = new Scalar (yyvsp[0].i); ;
     break;}
 case 90:
-#line 652 "parser.yy"
+#line 655 "parser.yy"
 { yyval.chord  = yyvsp[-1].chord; ;
     break;}
 case 91:
-#line 653 "parser.yy"
+#line 656 "parser.yy"
 {
 		yyval.chord = yyvsp[0].chord;
 		yyval.chord->multi_level_i_=yyvsp[-1].i;
 	;
     break;}
 case 92:
-#line 660 "parser.yy"
+#line 663 "parser.yy"
 {
 		yyval.chord = new Chord;
 		yyval.chord-> multi_level_i_ = 1;
@@ -1772,13 +1775,13 @@ case 92:
 	;
     break;}
 case 93:
-#line 665 "parser.yy"
+#line 668 "parser.yy"
 {
 		yyval.chord->add (yyvsp[0].music);
 	;
     break;}
 case 94:
-#line 671 "parser.yy"
+#line 674 "parser.yy"
 {
 		yyval.music = yyvsp[0].music;
 		yyval.music -> transpose (yyvsp[-1].melreq);
@@ -1787,18 +1790,18 @@ case 94:
 	;
     break;}
 case 95:
-#line 684 "parser.yy"
+#line 687 "parser.yy"
 {
 	 	THIS->add_requests ((Chord*)yyvsp[-1].music);//ugh
  		yyval.music = yyvsp[-1].music;
 	;
     break;}
 case 97:
-#line 689 "parser.yy"
+#line 692 "parser.yy"
 { yyval.music = 0; ;
     break;}
 case 100:
-#line 698 "parser.yy"
+#line 701 "parser.yy"
 {
 		yyval.music = new Request_chord;
 		yyval.music-> set_spot (THIS->here_input ());
@@ -1808,30 +1811,30 @@ case 100:
 	;
     break;}
 case 102:
-#line 709 "parser.yy"
+#line 712 "parser.yy"
 { yyval.request = yyvsp[-1].request; ;
     break;}
 case 103:
-#line 713 "parser.yy"
+#line 716 "parser.yy"
 {
 		yyval.request = new Barcheck_req;
 	;
     break;}
 case 104:
-#line 716 "parser.yy"
+#line 719 "parser.yy"
 {
 		yyval.request = yyvsp[0].id->request ();
 	;
     break;}
 case 105:
-#line 722 "parser.yy"
+#line 725 "parser.yy"
 {
 		yyval.request = new Bar_req (*yyvsp[0].string);
 		delete yyvsp[0].string;
 	;
     break;}
 case 106:
-#line 726 "parser.yy"
+#line 729 "parser.yy"
 {
 		Break_force_req * f = new Break_force_req;
 		f-> set_spot (THIS->here_input ());
@@ -1839,7 +1842,7 @@ case 106:
 	;
     break;}
 case 107:
-#line 731 "parser.yy"
+#line 734 "parser.yy"
 {
 		Meter_change_req *m = new Meter_change_req;
 		m->set (yyvsp[-2].i,yyvsp[0].i);
@@ -1847,7 +1850,7 @@ case 107:
 	;
     break;}
 case 108:
-#line 736 "parser.yy"
+#line 739 "parser.yy"
 {
 		Skip_req * skip_p = new Skip_req;
 		skip_p->duration_.set_plet (yyvsp[0].moment->num (),
@@ -1858,33 +1861,33 @@ case 108:
 	;
     break;}
 case 109:
-#line 744 "parser.yy"
+#line 747 "parser.yy"
 {
 		yyval.request = yyvsp[0].tempo;
 	;
     break;}
 case 110:
-#line 747 "parser.yy"
+#line 750 "parser.yy"
 {
 		yyval.request = new Cadenza_req (yyvsp[0].i);
 	;
     break;}
 case 111:
-#line 750 "parser.yy"
+#line 753 "parser.yy"
 {
 		yyval.request = new Partial_measure_req (*yyvsp[0].moment);
 		delete yyvsp[0].moment;
 	;
     break;}
 case 112:
-#line 754 "parser.yy"
+#line 757 "parser.yy"
 {
 		yyval.request = new Clef_change_req (*yyvsp[0].string);
 		delete yyvsp[0].string;
 	;
     break;}
 case 113:
-#line 758 "parser.yy"
+#line 761 "parser.yy"
 {
 		Key_change_req *key_p= new Key_change_req;
 		key_p->melodic_p_arr_ = *yyvsp[0].melreqvec;
@@ -1893,13 +1896,13 @@ case 113:
 	;
     break;}
 case 114:
-#line 764 "parser.yy"
+#line 767 "parser.yy"
 {
 		yyval.request = get_grouping_req (*yyvsp[0].intvec); delete yyvsp[0].intvec;
 	;
     break;}
 case 115:
-#line 770 "parser.yy"
+#line 773 "parser.yy"
 {
 		/* something silly happened.  Junk this stuff*/
 		if (!THIS->post_reqs.empty ())
@@ -1910,14 +1913,14 @@ case 115:
 	;
     break;}
 case 116:
-#line 778 "parser.yy"
+#line 781 "parser.yy"
 {
 		yyvsp[0].request->set_spot (THIS->here_input ());
 		THIS->post_reqs.push (yyvsp[0].request);
 	;
     break;}
 case 117:
-#line 782 "parser.yy"
+#line 785 "parser.yy"
 {
 		Array<Request*>& r = *THIS->get_parens_request (yyvsp[0].i);
 		for (int i = 0; i < r.size (); i++ )
@@ -1927,19 +1930,19 @@ case 117:
 	;
     break;}
 case 120:
-#line 797 "parser.yy"
+#line 800 "parser.yy"
 {
 		yyval.request = (Request*)yyvsp[0].id->request ();
 	;
     break;}
 case 121:
-#line 800 "parser.yy"
+#line 803 "parser.yy"
 {
 		yyval.request = yyvsp[0].request;
 	;
     break;}
 case 122:
-#line 803 "parser.yy"
+#line 806 "parser.yy"
 {
 		Abbreviation_req* a = new Abbreviation_req;
 		a->type_i_ = yyvsp[0].i;
@@ -1947,27 +1950,27 @@ case 122:
 	;
     break;}
 case 123:
-#line 816 "parser.yy"
+#line 819 "parser.yy"
 {
 		yyval.melreq = yyvsp[0].melreq->clone ()->musical ()->melodic ();
 		yyval.melreq->octave_i_ += THIS->default_octave_i_;
 	;
     break;}
 case 124:
-#line 820 "parser.yy"
+#line 823 "parser.yy"
 {
 		yyval.melreq-> octave_i_ += yyvsp[0].i;
 	;
     break;}
 case 125:
-#line 823 "parser.yy"
+#line 826 "parser.yy"
 {
 		yyval.melreq = yyvsp[0].melreq;
 		yyvsp[0].melreq-> octave_i_ -= yyvsp[-1].i;
 	;
     break;}
 case 126:
-#line 830 "parser.yy"
+#line 833 "parser.yy"
 {
 		yyval.notereq = new Note_req;
 		* (Melodic_req *) yyval.notereq = *yyvsp[0].melreq;
@@ -1975,13 +1978,13 @@ case 126:
 	;
     break;}
 case 127:
-#line 835 "parser.yy"
+#line 838 "parser.yy"
 {
 		yyval.notereq->forceacc_b_ = ! yyval.notereq->forceacc_b_;
 	;
     break;}
 case 128:
-#line 842 "parser.yy"
+#line 845 "parser.yy"
 {/* ugh */
 		yyval.melreq = new Melodic_req;
 		yyval.melreq->octave_i_ = yyvsp[-3].i;
@@ -1990,7 +1993,7 @@ case 128:
 	;
     break;}
 case 129:
-#line 851 "parser.yy"
+#line 854 "parser.yy"
 {
 		yyval.duration = new Duration;
 		yyval.duration-> durlog_i_ = yyvsp[-2].i;
@@ -1998,7 +2001,7 @@ case 129:
 	;
     break;}
 case 130:
-#line 859 "parser.yy"
+#line 862 "parser.yy"
 {
 		Absolute_dynamic_req *ad_p = new Absolute_dynamic_req;
 		ad_p ->loudness_ = (Dynamic_req::Loudness)yyvsp[-1].i;
@@ -2006,23 +2009,23 @@ case 130:
 	;
     break;}
 case 131:
-#line 864 "parser.yy"
+#line 867 "parser.yy"
 {
 		Span_dynamic_req * sp_p = new Span_dynamic_req;
-		sp_p->spantype = yyvsp[-1].i;
-		sp_p-> dynamic_dir_  = yyvsp[-2].i;
+		sp_p->spantype = (Span_req::Spantype)yyvsp[-1].i;
+		sp_p-> dynamic_dir_  = (Direction)yyvsp[-2].i;
 		yyval.request = sp_p;
 	;
     break;}
 case 132:
-#line 873 "parser.yy"
+#line 876 "parser.yy"
 {
 		yyval.pair[0] = yyvsp[-2].i;
 		yyval.pair[1] = yyvsp[0].i;
 	;
     break;}
 case 133:
-#line 878 "parser.yy"
+#line 881 "parser.yy"
 {
 		int num = yyvsp[0].i >? 1;
 		yyval.pair[0] = guess_plet_a[(num <? GUESS_PLET) - 1];
@@ -2030,7 +2033,7 @@ case 133:
 	;
     break;}
 case 134:
-#line 886 "parser.yy"
+#line 889 "parser.yy"
 {
 		yyval.i = MAEBTELP;
 		THIS->plet_.type_i_ = yyvsp[0].pair[1];
@@ -2040,7 +2043,7 @@ case 134:
 	;
     break;}
 case 135:
-#line 893 "parser.yy"
+#line 896 "parser.yy"
 {
 		yyval.i = TELP;
 		THIS->plet_.type_i_ = 1;
@@ -2050,7 +2053,7 @@ case 135:
 	;
     break;}
 case 136:
-#line 900 "parser.yy"
+#line 903 "parser.yy"
 {
 		yyval.i = TELP;
 		THIS->plet_.type_i_ = yyvsp[0].pair[1];
@@ -2060,42 +2063,42 @@ case 136:
 	;
     break;}
 case 137:
-#line 910 "parser.yy"
+#line 913 "parser.yy"
 {
 		yyval.i = '~';
 	;
     break;}
 case 138:
-#line 913 "parser.yy"
+#line 916 "parser.yy"
 {
 		yyval.i='(';
 	;
     break;}
 case 139:
-#line 916 "parser.yy"
+#line 919 "parser.yy"
 {
 		yyval.i = ']';
 	;
     break;}
 case 140:
-#line 919 "parser.yy"
+#line 922 "parser.yy"
 {
 		yyval.i = '<';
 	;
     break;}
 case 141:
-#line 922 "parser.yy"
+#line 925 "parser.yy"
 {
 		yyval.i = '>';
 	;
     break;}
 case 142:
-#line 925 "parser.yy"
+#line 928 "parser.yy"
 {
 	;
     break;}
 case 143:
-#line 930 "parser.yy"
+#line 933 "parser.yy"
 {
 		yyval.c = '[';
 		if (!Duration::duration_type_b (yyvsp[0].i))
@@ -2107,7 +2110,7 @@ case 143:
 	;
     break;}
 case 144:
-#line 942 "parser.yy"
+#line 945 "parser.yy"
 {
 		yyval.i = BEAMPLET;
 		THIS->plet_.type_i_ = yyvsp[0].pair[1];
@@ -2117,7 +2120,7 @@ case 144:
 	;
     break;}
 case 145:
-#line 949 "parser.yy"
+#line 952 "parser.yy"
 {
 		yyval.i = PLET;
 		THIS->plet_.type_i_ = yyvsp[0].pair[1];
@@ -2127,39 +2130,39 @@ case 145:
 	;
     break;}
 case 146:
-#line 959 "parser.yy"
+#line 962 "parser.yy"
 {
 		yyval.i = '!';
 	;
     break;}
 case 147:
-#line 962 "parser.yy"
+#line 965 "parser.yy"
 {
 		yyval.i=')';
 	;
     break;}
 case 148:
-#line 965 "parser.yy"
+#line 968 "parser.yy"
 {
 		yyval.i='[';
 	;
     break;}
 case 149:
-#line 968 "parser.yy"
+#line 971 "parser.yy"
 {
 	;
     break;}
 case 150:
-#line 970 "parser.yy"
+#line 973 "parser.yy"
 {
 	;
     break;}
 case 151:
-#line 977 "parser.yy"
+#line 980 "parser.yy"
 { yyval.script = yyvsp[-1].script; ;
     break;}
 case 152:
-#line 981 "parser.yy"
+#line 984 "parser.yy"
 {
 		Script_def *s = new Script_def;
 		s->set_from_input (*yyvsp[-5].string,yyvsp[-4].i, yyvsp[-3].i,yyvsp[-2].i,yyvsp[-1].i, yyvsp[0].i);
@@ -2168,39 +2171,39 @@ case 152:
 	;
     break;}
 case 153:
-#line 990 "parser.yy"
+#line 993 "parser.yy"
 {
 		Musical_script_req *m = new Musical_script_req;
 		yyval.request = m;
 		m->scriptdef_p_ = yyvsp[0].script;
 		m->set_spot (THIS->here_input ());
 		if (!m->dir_)
-		  m->dir_  = yyvsp[-1].i;
+		  m->dir_  = (Direction)yyvsp[-1].i;
 	;
     break;}
 case 154:
-#line 1001 "parser.yy"
+#line 1004 "parser.yy"
 { 
 		yyval.script = yyvsp[0].textdef;
 		((Text_def*) yyval.script)->align_i_ = CENTER; /* UGH */
 	;
     break;}
 case 155:
-#line 1005 "parser.yy"
+#line 1008 "parser.yy"
 { 
 		yyval.script = yyvsp[0].script;
 		yyval.script-> set_spot (THIS->here_input ());
 	;
     break;}
 case 156:
-#line 1009 "parser.yy"
+#line 1012 "parser.yy"
 {
 		yyval.script = yyvsp[0].textdef;
 		((Text_def*)yyval.script)->align_i_ = CENTER;
 	;
     break;}
 case 157:
-#line 1016 "parser.yy"
+#line 1019 "parser.yy"
 {
 		Text_def *t  = new Text_def;
 		yyval.textdef = t;
@@ -2211,7 +2214,7 @@ case 157:
 	;
     break;}
 case 158:
-#line 1027 "parser.yy"
+#line 1030 "parser.yy"
 {
 		Text_def* t  = new Text_def;
 		yyval.textdef = t;
@@ -2221,69 +2224,69 @@ case 158:
 	;
     break;}
 case 159:
-#line 1037 "parser.yy"
+#line 1040 "parser.yy"
 { yyval.string = get_scriptdef ('^'); ;
     break;}
 case 160:
-#line 1038 "parser.yy"
+#line 1041 "parser.yy"
 { yyval.string = get_scriptdef ('+'); ;
     break;}
 case 161:
-#line 1039 "parser.yy"
+#line 1042 "parser.yy"
 { yyval.string = get_scriptdef ('-'); ;
     break;}
 case 162:
-#line 1040 "parser.yy"
+#line 1043 "parser.yy"
 { yyval.string = get_scriptdef ('|'); ;
     break;}
 case 163:
-#line 1041 "parser.yy"
+#line 1044 "parser.yy"
 { yyval.string = get_scriptdef ('o'); ;
     break;}
 case 164:
-#line 1042 "parser.yy"
+#line 1045 "parser.yy"
 { yyval.string = get_scriptdef ('>'); ;
     break;}
 case 165:
-#line 1043 "parser.yy"
+#line 1046 "parser.yy"
 {
 		yyval.string = get_scriptdef ('.');
 	;
     break;}
 case 166:
-#line 1049 "parser.yy"
+#line 1052 "parser.yy"
 { yyval.script = yyvsp[0].id->script (); ;
     break;}
 case 167:
-#line 1050 "parser.yy"
+#line 1053 "parser.yy"
 { yyval.script = yyvsp[0].script; ;
     break;}
 case 168:
-#line 1051 "parser.yy"
+#line 1054 "parser.yy"
 {
 		yyval.script = THIS->lexer_p_->lookup_identifier (*yyvsp[0].string)->script ();
 		delete yyvsp[0].string;
 	;
     break;}
 case 169:
-#line 1058 "parser.yy"
+#line 1061 "parser.yy"
 { yyval.i = -1; ;
     break;}
 case 170:
-#line 1059 "parser.yy"
+#line 1062 "parser.yy"
 { yyval.i = 1; ;
     break;}
 case 171:
-#line 1060 "parser.yy"
+#line 1063 "parser.yy"
 { yyval.i = 0; ;
     break;}
 case 172:
-#line 1064 "parser.yy"
+#line 1067 "parser.yy"
 {
 	;
     break;}
 case 173:
-#line 1066 "parser.yy"
+#line 1069 "parser.yy"
 {
 		Array<Request*>& r = *THIS->get_parens_request (yyvsp[0].i);
 		for (int i = 0; i < r.size (); i++ )
@@ -2293,21 +2296,21 @@ case 173:
 	;
     break;}
 case 174:
-#line 1076 "parser.yy"
+#line 1079 "parser.yy"
 {
 		THIS->set_duration_mode (*yyvsp[0].string);
 		delete yyvsp[0].string;
 	;
     break;}
 case 175:
-#line 1080 "parser.yy"
+#line 1083 "parser.yy"
 {
 		THIS->set_default_duration (yyvsp[0].duration);
 		delete yyvsp[0].duration;
 	;
     break;}
 case 176:
-#line 1084 "parser.yy"
+#line 1087 "parser.yy"
 {
 		/*
 			This is weird, but default_octave_i_
@@ -2319,67 +2322,67 @@ case 176:
 		THIS->default_octave_i_ = 1; ;
     break;}
 case 177:
-#line 1094 "parser.yy"
+#line 1097 "parser.yy"
 {
 		THIS->default_octave_i_ = yyvsp[0].melreq->octave_i_;
 		delete yyvsp[0].melreq;
 	;
     break;}
 case 178:
-#line 1098 "parser.yy"
+#line 1101 "parser.yy"
 {
 		THIS->textstyle_str_ = *yyvsp[0].string;
 		delete yyvsp[0].string;
 	;
     break;}
 case 179:
-#line 1105 "parser.yy"
+#line 1108 "parser.yy"
 {
 		yyval.moment = new Moment (0,1);
 	;
     break;}
 case 180:
-#line 1108 "parser.yy"
+#line 1111 "parser.yy"
 {
 		*yyval.moment += yyvsp[0].duration->length ();
 	;
     break;}
 case 181:
-#line 1114 "parser.yy"
+#line 1117 "parser.yy"
 { yyval.i = 1; ;
     break;}
 case 182:
-#line 1115 "parser.yy"
+#line 1118 "parser.yy"
 { yyval.i ++; ;
     break;}
 case 183:
-#line 1119 "parser.yy"
+#line 1122 "parser.yy"
 {
 		yyval.duration = new Duration (THIS->default_duration_);
 	;
     break;}
 case 184:
-#line 1122 "parser.yy"
+#line 1125 "parser.yy"
 {
 		yyval.duration = new Duration (THIS->default_duration_);
 		yyval.duration->dots_i_  = yyvsp[0].i;
 	;
     break;}
 case 185:
-#line 1126 "parser.yy"
+#line 1129 "parser.yy"
 {
 		THIS->set_last_duration (yyvsp[0].duration);
 		yyval.duration = yyvsp[0].duration;
 	;
     break;}
 case 186:
-#line 1133 "parser.yy"
+#line 1136 "parser.yy"
 {
 		yyval.duration = yyvsp[0].duration;
 	;
     break;}
 case 187:
-#line 1139 "parser.yy"
+#line 1142 "parser.yy"
 {
 		yyval.duration = new Duration;
 		if (!Duration::duration_type_b (yyvsp[0].i))
@@ -2391,37 +2394,37 @@ case 187:
 	;
     break;}
 case 188:
-#line 1148 "parser.yy"
+#line 1151 "parser.yy"
 {
 		yyval.duration = yyvsp[0].id->duration ();
 	;
     break;}
 case 189:
-#line 1151 "parser.yy"
+#line 1154 "parser.yy"
 {
 		yyval.duration->dots_i_ ++;
 	;
     break;}
 case 190:
-#line 1154 "parser.yy"
+#line 1157 "parser.yy"
 {
 		yyval.duration->plet_.iso_i_ = yyvsp[0].i;
 	;
     break;}
 case 191:
-#line 1157 "parser.yy"
+#line 1160 "parser.yy"
 {
 		yyval.duration->plet_.type_i_ = yyvsp[0].i;
 	;
     break;}
 case 192:
-#line 1164 "parser.yy"
+#line 1167 "parser.yy"
 {
 		yyval.i =0;
 	;
     break;}
 case 193:
-#line 1167 "parser.yy"
+#line 1170 "parser.yy"
 {
 		if (!Duration::duration_type_b (yyvsp[0].i))
 			THIS->parser_error ("3:Not a duration");
@@ -2431,7 +2434,7 @@ case 193:
 	;
     break;}
 case 194:
-#line 1178 "parser.yy"
+#line 1181 "parser.yy"
 {
 		if (!THIS->lexer_p_->note_state_b ())
 			THIS->parser_error ("have to be in Note mode for notes");
@@ -2441,14 +2444,14 @@ case 194:
 	;
     break;}
 case 195:
-#line 1185 "parser.yy"
+#line 1188 "parser.yy"
 {
 		yyval.music = THIS->get_rest_element (*yyvsp[-1].string, yyvsp[0].duration);
 		delete yyvsp[-1].string;
 	;
     break;}
 case 196:
-#line 1192 "parser.yy"
+#line 1195 "parser.yy"
 {
 	/* this sux! text-def should be feature of lyric-engraver. */
 		if (!THIS->lexer_p_->lyric_state_b ())
@@ -2458,43 +2461,43 @@ case 196:
 	;
     break;}
 case 197:
-#line 1203 "parser.yy"
+#line 1206 "parser.yy"
 {
 		yyval.melreqvec = new Array<Melodic_req*>;
 	;
     break;}
 case 198:
-#line 1206 "parser.yy"
+#line 1209 "parser.yy"
 {
 		yyval.melreqvec->push (yyvsp[0].melreq->clone ()->musical ()->melodic ());
 	;
     break;}
 case 199:
-#line 1212 "parser.yy"
+#line 1215 "parser.yy"
 {
 		yyval.i = yyvsp[0].i;
 	;
     break;}
 case 200:
-#line 1215 "parser.yy"
+#line 1218 "parser.yy"
 {
 		yyval.i = yyvsp[0].i;
 	;
     break;}
 case 201:
-#line 1220 "parser.yy"
+#line 1223 "parser.yy"
 {
 		yyval.i = yyvsp[0].i;
 	;
     break;}
 case 202:
-#line 1223 "parser.yy"
+#line 1226 "parser.yy"
 {
 		yyval.i = -yyvsp[0].i;
 	;
     break;}
 case 203:
-#line 1226 "parser.yy"
+#line 1229 "parser.yy"
 {
 		int *i_p = yyvsp[0].id->intid ();
 		yyval.i = *i_p;
@@ -2502,13 +2505,13 @@ case 203:
 	;
     break;}
 case 204:
-#line 1234 "parser.yy"
+#line 1237 "parser.yy"
 {
 		yyval.real = yyvsp[0].real;
 	;
     break;}
 case 205:
-#line 1237 "parser.yy"
+#line 1240 "parser.yy"
 {
 		Real *r_p = yyvsp[0].id->real ();
 		yyval.real = * r_p;
@@ -2516,65 +2519,65 @@ case 205:
 	;
     break;}
 case 206:
-#line 1247 "parser.yy"
+#line 1250 "parser.yy"
 { yyval.real = yyvsp[-1].real*yyvsp[0].real; ;
     break;}
 case 207:
-#line 1251 "parser.yy"
+#line 1254 "parser.yy"
 { yyval.real = 1 CM; ;
     break;}
 case 208:
-#line 1252 "parser.yy"
+#line 1255 "parser.yy"
 { yyval.real = 1 INCH; ;
     break;}
 case 209:
-#line 1253 "parser.yy"
+#line 1256 "parser.yy"
 { yyval.real = 1 MM; ;
     break;}
 case 210:
-#line 1254 "parser.yy"
+#line 1257 "parser.yy"
 { yyval.real = 1 PT; ;
     break;}
 case 211:
-#line 1261 "parser.yy"
+#line 1264 "parser.yy"
 { yyval.lookup = yyvsp[-1].lookup; ;
     break;}
 case 212:
-#line 1265 "parser.yy"
+#line 1268 "parser.yy"
 {
 		yyval.lookup = new Lookup;
 	;
     break;}
 case 213:
-#line 1268 "parser.yy"
+#line 1271 "parser.yy"
 {
 		yyval.lookup = yyvsp[0].id->lookup ();
 	;
     break;}
 case 214:
-#line 1271 "parser.yy"
+#line 1274 "parser.yy"
 {
 		yyval.lookup->texsetting = *yyvsp[0].string;
 		delete yyvsp[0].string;
 	;
     break;}
 case 215:
-#line 1275 "parser.yy"
+#line 1278 "parser.yy"
 {
 		yyval.lookup->add (*yyvsp[-2].string, yyvsp[0].symtable);
 		delete yyvsp[-2].string;
 	;
     break;}
 case 216:
-#line 1282 "parser.yy"
+#line 1285 "parser.yy"
 { yyval.symtable = yyvsp[-1].symtable; ;
     break;}
 case 217:
-#line 1286 "parser.yy"
+#line 1289 "parser.yy"
 { yyval.symtable = new Symtable; ;
     break;}
 case 218:
-#line 1287 "parser.yy"
+#line 1290 "parser.yy"
 {
 		yyval.symtable->add (*yyvsp[-1].string, *yyvsp[0].symbol);
 		delete yyvsp[-1].string;
@@ -2582,7 +2585,7 @@ case 218:
 	;
     break;}
 case 219:
-#line 1295 "parser.yy"
+#line 1298 "parser.yy"
 {
 		yyval.symbol = new Atom (*yyvsp[-1].string, *yyvsp[0].box);
 		delete yyvsp[-1].string;
@@ -2590,7 +2593,7 @@ case 219:
 	;
     break;}
 case 220:
-#line 1300 "parser.yy"
+#line 1303 "parser.yy"
 {
 		Box b (Interval (0,0), Interval (0,0));
 		yyval.symbol = new Atom (*yyvsp[0].string, b);
@@ -2598,7 +2601,7 @@ case 220:
 	;
     break;}
 case 221:
-#line 1308 "parser.yy"
+#line 1311 "parser.yy"
 {
 		yyval.box = new Box (*yyvsp[-1].interval, *yyvsp[0].interval);
 		delete yyvsp[-1].interval;
@@ -2606,7 +2609,7 @@ case 221:
 	;
     break;}
 case 222:
-#line 1315 "parser.yy"
+#line 1318 "parser.yy"
 {
 		yyval.interval = new Interval (yyvsp[-1].real, yyvsp[0].real);
 	;
@@ -2809,7 +2812,7 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 1320 "parser.yy"
+#line 1323 "parser.yy"
 
 
 void
diff --git a/lily/parser.yy b/lily/parser.yy
index 4be93f0957..842423e0ea 100644
--- a/lily/parser.yy
+++ b/lily/parser.yy
@@ -40,6 +40,9 @@
 #include "duration-convert.hh"
 #include "change-translator.hh"
 
+// needed for bison.simple's malloc() and free()
+#include <malloc.h>
+
 int const GUESS_PLET = 5;
 int guess_plet_a[GUESS_PLET] =
 { 
@@ -863,8 +866,8 @@ dynamic_req:
 	}
 	| SPANDYNAMIC '{' int int '}' {
 		Span_dynamic_req * sp_p = new Span_dynamic_req;
-		sp_p->spantype = $4;
-		sp_p-> dynamic_dir_  = $3;
+		sp_p->spantype = (Span_req::Spantype)$4;
+		sp_p-> dynamic_dir_  = (Direction)$3;
 		$$ = sp_p;
 	}
 	;
@@ -993,7 +996,7 @@ script_req:
 		m->scriptdef_p_ = $2;
 		m->set_spot (THIS->here_input ());
 		if (!m->dir_)
-		  m->dir_  = $1;
+		  m->dir_  = (Direction)$1;
 	}
 	;
 
diff --git a/lily/plet-spanner.cc b/lily/plet-spanner.cc
index 6eebc48f04..6787088b0e 100644
--- a/lily/plet-spanner.cc
+++ b/lily/plet-spanner.cc
@@ -85,7 +85,7 @@ Plet_spanner::do_add_processing ()
   do {
     if (!stem_l_drul_[d])
       new_stem_drul[d] = stem_l_drul_[(Direction)-d];
-  } while ( (d *= -1) != LEFT);
+  } while (flip(&d) != LEFT);
   stem_l_drul_ = new_stem_drul;
 }
   
@@ -110,7 +110,7 @@ Plet_spanner::do_post_processing ()
       if (d == RIGHT)
         dx_f_drul_[d] = nw_f;
     }
-  while ( (d *= -1) != LEFT);
+  while (flip(&d) != LEFT);
 }
 
 void
diff --git a/lily/rod.cc b/lily/rod.cc
new file mode 100644
index 0000000000..707f5572e6
--- /dev/null
+++ b/lily/rod.cc
@@ -0,0 +1,54 @@
+/*   
+  rod.cc --  implement Rod, Column_rod
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+#include "rod.hh"
+#include "p-col.hh"
+#include "debug.hh"
+
+Rod::Rod (Item *l, Item *r)
+{
+  item_l_drul_[LEFT] =l;
+  item_l_drul_[RIGHT]=r;
+  distance_f_ = l->width () [RIGHT] + r->width ()[LEFT];
+}
+	  
+Rod::Rod ()
+{
+  distance_f_ = 0.0;
+  item_l_drul_[LEFT] = item_l_drul_[RIGHT] =0;
+}
+
+void
+Column_rod::print () const
+{
+#ifndef NDEBUG
+  DOUT << "Column_rod { rank = "
+       << other_l_->rank_i () << ", dist = " << distance_f_ << "}\n";   
+#endif
+}
+
+Column_rod::Column_rod ()
+{
+  distance_f_ = 0;
+  dir_ = CENTER;
+  other_l_ = 0;
+}
+  
+int
+Column_rod::compare (const Column_rod &r1, const Column_rod &r2)
+{
+  return r1.other_l_->rank_i() - r2.other_l_->rank_i();
+}
+void
+Rod::add_to_cols ()
+{
+  item_l_drul_[RIGHT]->column_l ()->add_rod
+    (item_l_drul_[LEFT]->column_l (), distance_f_, LEFT);
+  item_l_drul_[LEFT]->column_l ()->add_rod
+    (item_l_drul_[RIGHT]->column_l (), distance_f_,RIGHT);
+}
diff --git a/lily/score-column.cc b/lily/score-column.cc
index bd1a3527b4..0da2f640cb 100644
--- a/lily/score-column.cc
+++ b/lily/score-column.cc
@@ -42,6 +42,7 @@ Moment_compare (Moment const &m1, Moment const &m2)
 void
 Score_column::preprocess()
 {
+  Paper_column ::preprocess ();
   durations.sort (Moment_compare);
 }
 
diff --git a/lily/score-elem.cc b/lily/score-elem.cc
index 1a6ec4105e..e81d7e0563 100644
--- a/lily/score-elem.cc
+++ b/lily/score-elem.cc
@@ -191,6 +191,11 @@ Score_elem::do_pre_processing()
 {
 }
 
+void
+Score_elem::do_space_processing ()
+{
+}
+
 void
 Score_elem::do_add_processing()
 {
diff --git a/lily/score-grav.cc b/lily/score-grav.cc
index 8e28c11280..06f54eca51 100644
--- a/lily/score-grav.cc
+++ b/lily/score-grav.cc
@@ -144,7 +144,7 @@ Score_engraver::typeset_all()
 		s->set_bounds(d, command_column_l_);
 		warning ("Unbound spanner");
 	      }
-	  } while ((d *= -1) != LEFT);
+	  } while (flip(&d) != LEFT);
 	}
       else 
 	{
diff --git a/lily/script.cc b/lily/script.cc
index 0979cfe824..f5333cea46 100644
--- a/lily/script.cc
+++ b/lily/script.cc
@@ -54,7 +54,7 @@ Script::set_default_dir()
   if (s_i)
     {
       if (stem_l_)
-	dir_ = stem_l_->dir_ * s_i;
+	dir_ = Direction(stem_l_->dir_ * s_i);
       else
 	{
 	  specs_l_->warning (_("Script needs stem direction"));
diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc
new file mode 100644
index 0000000000..eca012b485
--- /dev/null
+++ b/lily/separating-group-spanner.cc
@@ -0,0 +1,52 @@
+/*   
+  separating-group-spanner.cc --  implement Separating_group_spanner
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#include "separating-group-spanner.hh"
+#include "single-malt-grouping-item.hh"
+
+Array<Rod>
+Separating_group_spanner::get_rods () const
+{
+  Array<Rod> a;
+
+  for (int i=0; i < spacing_unit_l_arr_.size () -1; i++)
+    {
+      a.push (Rod (spacing_unit_l_arr_[i], spacing_unit_l_arr_[i+1]));    
+      if (spacing_unit_l_arr_[i]->breakable_b_)
+	{
+	  a.push (Rod (spacing_unit_l_arr_[i]->find_prebroken_piece (RIGHT), spacing_unit_l_arr_[i+1]));
+	}
+      if (spacing_unit_l_arr_[i+1]->breakable_b_)
+	{
+	  a.push (Rod (spacing_unit_l_arr_[i], spacing_unit_l_arr_[i+1]->find_prebroken_piece (LEFT)));
+	}
+    }
+      
+  return a;
+}
+
+void
+Separating_group_spanner::add_spacing_unit (Single_malt_grouping_item*i)
+{
+  spacing_unit_l_arr_.push (i);
+  add_dependency (i);
+}
+
+IMPLEMENT_IS_TYPE_B1(Separating_group_spanner, Spanner);
+
+void
+Separating_group_spanner::do_substitute_dependency (Score_elem*o, Score_elem*n)
+{
+  if (o->is_type_b (Single_malt_grouping_item::static_name ()))
+    {
+      Single_malt_grouping_item*ns = n ? (Single_malt_grouping_item*)n->item () : 0;
+      spacing_unit_l_arr_.substitute ((Single_malt_grouping_item*)o->item (), ns);
+    }
+}
+
diff --git a/lily/separating-line-group-grav.cc b/lily/separating-line-group-grav.cc
new file mode 100644
index 0000000000..889c8db670
--- /dev/null
+++ b/lily/separating-line-group-grav.cc
@@ -0,0 +1,77 @@
+/*   
+  separating-line-group-grav.cc --  implement Separating_line_group_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#include "separating-line-group-grav.hh"
+#include "separating-group-spanner.hh"
+#include "single-malt-grouping-item.hh"
+#include "p-col.hh"
+
+Separating_line_group_engraver::Separating_line_group_engraver ()
+{
+  sep_span_p_ = 0;
+  break_malt_p_ = 0;
+  nobreak_malt_p_ =0;
+}
+
+void
+Separating_line_group_engraver::do_creation_processing ()
+{
+  sep_span_p_ = new Separating_group_spanner;
+  announce_element ( Score_elem_info (sep_span_p_, 0));
+  sep_span_p_->set_bounds (LEFT, get_staff_info ().command_pcol_l ());
+}
+
+void
+Separating_line_group_engraver::do_removal_processing ()
+{
+  sep_span_p_->set_bounds (RIGHT, get_staff_info ().command_pcol_l ());
+  typeset_element (sep_span_p_);
+  sep_span_p_ =0;
+}
+
+void
+Separating_line_group_engraver::acknowledge_element (Score_elem_info i)
+{
+  Item * it = i.elem_l_->item ();
+  if (it && !it->axis_group_l_a_[X_AXIS])
+    {
+      Single_malt_grouping_item *&p_ref_ (it->breakable_b_ ?
+					  break_malt_p_ : nobreak_malt_p_);
+
+      if (!p_ref_)
+	{
+	  p_ref_ = new Single_malt_grouping_item;
+	  p_ref_->breakable_b_ = it->breakable_b_;
+	  announce_element (Score_elem_info (p_ref_, 0));
+	}
+      p_ref_->add (it);
+    }
+}
+
+void
+Separating_line_group_engraver::do_pre_move_processing ()
+{
+  if (break_malt_p_)
+    {
+      sep_span_p_->add_spacing_unit (break_malt_p_);
+      
+      typeset_element (break_malt_p_);
+      break_malt_p_ =0;
+    }
+  if (nobreak_malt_p_)
+    {
+      sep_span_p_->add_spacing_unit (nobreak_malt_p_);
+      typeset_element (nobreak_malt_p_);
+      nobreak_malt_p_ =0;
+    }
+}
+
+
+IMPLEMENT_IS_TYPE_B1 (Separating_line_group_engraver, Line_group_engraver);
+ADD_THIS_TRANSLATOR( Separating_line_group_engraver);
diff --git a/lily/single-malt-grouping-item.cc b/lily/single-malt-grouping-item.cc
new file mode 100644
index 0000000000..f6975f77c5
--- /dev/null
+++ b/lily/single-malt-grouping-item.cc
@@ -0,0 +1,50 @@
+/*   
+  single-malt-grouping-item.cc --  implement Single_malt_grouping_item
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#include "single-malt-grouping-item.hh"
+#include "p-col.hh"
+
+Single_malt_grouping_item ::Single_malt_grouping_item()
+{
+  transparent_b_ = true;
+}
+
+void
+Single_malt_grouping_item::add (Item* i)
+{
+  assert (i);
+  item_l_arr_.push (i);
+  add_dependency (i);
+}
+
+Interval
+Single_malt_grouping_item::do_width () const
+{
+  Paper_column * pc = column_l ();
+  Interval w;
+  for (int i=0; i < item_l_arr_.size (); i++)
+    {
+      Item *il = item_l_arr_[i];
+      assert (pc == il->column_l ());
+      w.unite  (il->width () + il->relative_coordinate (pc, X_AXIS));
+    }
+  
+  return w + (- relative_coordinate (pc, X_AXIS)); // TODO
+}
+
+IMPLEMENT_IS_TYPE_B1(Single_malt_grouping_item, Item);
+
+void
+Single_malt_grouping_item::do_substitute_dependency (Score_elem*o, Score_elem*n)
+{
+  if (o->item ())
+    {
+      item_l_arr_.unordered_substitute (o->item (),  n ? n->item () : 0);
+    }
+}
diff --git a/lily/slur.cc b/lily/slur.cc
index 88b2c6cc33..f8142f23ee 100644
--- a/lily/slur.cc
+++ b/lily/slur.cc
@@ -127,7 +127,7 @@ Slur::do_post_processing ()
 	}
       dy_f_drul_[d] += dir_ * interline_f;
     }
-  while ((d *= -1) != LEFT);
+  while (flip(&d) != LEFT);
 }
 
 Real
diff --git a/lily/spanner.cc b/lily/spanner.cc
index a10cf1446f..85221d3c94 100644
--- a/lily/spanner.cc
+++ b/lily/spanner.cc
@@ -46,9 +46,9 @@ Spanner::break_into_pieces ()
       left = break_cols[i-1];
       right = break_cols[i];
       if (!right->line_l())
-	right = right->find_prebroken_piece(-1);
+	right = right->find_prebroken_piece(LEFT);
       if (!left->line_l())
-	left = left->find_prebroken_piece(1);
+	left = left->find_prebroken_piece(RIGHT);
 
             assert (left&&right && left->line_l() == right->line_l());
 
@@ -69,9 +69,9 @@ Spanner::set_my_columns()
   do 
     {
       if (!spanned_drul_[i]->line_l())
-	set_bounds(i,spanned_drul_[i]->find_prebroken_piece(-i));
+	set_bounds(i,spanned_drul_[i]->find_prebroken_piece((Direction)-i));
     } 
-  while ((i*=-1) != 1);
+  while (flip(&i) != 1);
 }       
 
 
@@ -172,3 +172,20 @@ Spanner::do_junk_links()
 {
   spanned_drul_[LEFT] = spanned_drul_[RIGHT] =0;
 }
+
+Array<Rod>
+Spanner::get_rods () const
+{
+  Array<Rod> r;
+  return r;
+}
+
+void
+Spanner::do_space_processing ()
+{
+  Array<Rod> rs (get_rods ());
+  for (int i=0; i < rs.size (); i++)
+    {
+      rs[i].add_to_cols ();
+    }
+}
diff --git a/lily/spring-spacer.cc b/lily/spring-spacer.cc
index 91e0ba7048..fffd8318df 100644
--- a/lily/spring-spacer.cc
+++ b/lily/spring-spacer.cc
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
 */
 
 
@@ -71,7 +71,7 @@ Spring_spacer::handle_loose_cols()
       connected.connect (i->left_i_,i->right_i_);
     }
   for (int i = 0; i < cols.size(); i++)
-    if (cols[i].fixed())
+    if (cols[i].fixed_b())
       fixed.push (i);
   for (int i=1; i < fixed.size(); i++)
     connected.connect (fixed[i-1], fixed[i]);
@@ -152,61 +152,77 @@ Spring_spacer::check_constraints (Vector v) const
 
   for (int i=0; i < dim; i++)
     {
-
-      if (cols[i].fixed()&&
+      if (cols[i].fixed_b() &&
 	  abs (cols[i].fixed_position() - v (i)) > COLFUDGE)
 	return false;
 
-      if (!i)
-	continue;
-
-      Real mindist=cols[i-1].width_[RIGHT]
-	-cols[i].width_[LEFT];
-
-      // ugh... compares
-      Real dif =v (i) - v (i-1)- mindist;
-      bool b = (dif > - COLFUDGE);
-
-
-      if (!b)
-	return false;
+      Array<Column_rod> &rods (cols[i].pcol_l_->minimal_dists_arr_drul_[RIGHT]);
+      for (int j =0; j < rods.size (); j++)
+	{
+	  int delta_idx=  rods[j].other_l_->rank_i () - cols[i].rank_i ();
+	  if (i + delta_idx >= dim )
+	    break;
+	  if (rods[j].other_l_ != cols[i + delta_idx].pcol_l_)
+	    continue;
+	  if (v (i + delta_idx) - v (i) < rods[j].distance_f_)
+	    return false;
+	}
 
     }
   return true;
 }
 
-/// try to generate a solution which obeys the min distances and fixed
-/// positions
+/** try to generate a solution which obeys the min distances and fixed positions
+ */
 Vector
 Spring_spacer::try_initial_solution() const
+{
+  Vector v;
+  if (try_initial_solution_and_tell (v))
+    warning ("I'm too fat; call Oprah");
+  return v;
+
+}
+
+bool
+Spring_spacer::try_initial_solution_and_tell (Vector &v) const
 {
   int dim=cols.size();
+  bool succeeded = true;
   Vector initsol (dim);
   for (int i=0; i < dim; i++)
     {
-      if (cols[i].fixed())
-	{
-	  initsol (i)=cols[i].fixed_position();
+      int first_rank = cols[0].rank_i ();
+      int last_rank = cols.top ().rank_i ();
 
-	  if (i > 0)
-	    {
-	      Real r =initsol (i-1)  + cols[i-1].width_[RIGHT];
-	      if (initsol (i) < r)
-		  initsol (i) =r;
-	    }
+      Real min_x = i ?  initsol (i-1) : 0.0;
+      for (int j=0; j < cols[i].pcol_l_->minimal_dists_arr_drul_[LEFT].size (); j++)
+	{
+	  Column_rod cr (cols[i].pcol_l_->minimal_dists_arr_drul_[LEFT] [j]);
+	  if (cr.other_l_->rank_i () < first_rank)
+	    break;
 
+	  int idx = cr.other_l_->rank_i () - first_rank;
+	  assert (i > idx && idx >= 0);
+	  if (cr.other_l_->break_status_i_ !=  cols[idx].pcol_l_->break_status_i_ )
+	    continue;
+	  
+	  min_x = min_x >? (initsol (idx) + cr.distance_f_);
 	}
-      else
+      
+      if (cols[i].fixed_b())
 	{
-	  Real mindist=cols[i-1].width_[RIGHT]
-	    - cols[i].width_[LEFT];
-	  if (mindist < 0.0)
-	    warning (_("Excentric column"));
-	  initsol (i)=initsol (i-1)+mindist;
+	  initsol (i)=cols[i].fixed_position();
+	  if (initsol (i) < min_x )
+	    {
+	      initsol (i) = min_x;
+	      succeeded = false;
+	    }
 	}
     }
-
-  return initsol;
+  v = initsol;
+  
+  return succeeded;
 }
 
 
@@ -240,7 +256,7 @@ void
 Spring_spacer::set_fixed_cols (Mixed_qp &qp) const
 {
   for (int j=0; j < cols.size(); j++)
-    if (cols[j].fixed())
+    if (cols[j].fixed_b())
       qp.add_fixed_var (j,cols[j].fixed_position());
 } 
 
@@ -249,18 +265,30 @@ void
 Spring_spacer::make_constraints (Mixed_qp& lp) const
 {
   int dim=cols.size();
-  for (int j=0; j < dim; j++)
+  int last_rank = cols.top ().pcol_l_->rank_i ();
+  
+  for (int j=0; j < dim -1; j++)
     {
-      Colinfo c=cols[j];
-      if (j > 0)
+      Paper_column* lc = cols[j].pcol_l_;
+      int my_rank = lc->rank_i();
+      for (int i = 0; i < lc->minimal_dists_arr_drul_[RIGHT].size (); i++)
 	{
 	  Vector c1(dim);
+	  Column_rod & cr = lc->minimal_dists_arr_drul_[RIGHT][i];
+	  int right_rank = cr.other_l_->rank_i ();
 
-	  c1(j)=1.0 ;
-	  c1(j-1)=-1.0 ;
+	  cout << "lr, rr, last = " << my_rank << ", " <<right_rank << ", " << last_rank << endl;
 
-	  lp.add_inequality_cons (c1, cols[j-1].width_[RIGHT] 
-				  - cols[j].width_[LEFT]);
+	  if (right_rank > last_rank)
+	    break;
+	      
+	  int right_idx = right_rank - my_rank + j;
+	  cout << "li, ri = " << j << "," << right_idx;
+	  cout << "lr, rr = " << my_rank << ", " <<right_rank << endl;
+	  c1(right_idx)=1.0 ;
+	  c1(j)=-1.0 ;
+
+	  lp.add_inequality_cons (c1, cr.distance_f_);
 	}
     }
 }
@@ -337,6 +365,8 @@ Spring_spacer::add_column (Paper_column  *col, bool fixed, Real fixpos)
   else
     c.rank_i_ = 0;
   cols.push (c);
+
+  
 }
 
 Line_of_cols
@@ -524,7 +554,7 @@ Spring_spacer::calc_idealspacing()
 
   /* 
      First do all non-musical columns
-   */
+  */
   for (int i=0; i < cols.size(); i++)
     {
       if (!scol_l (i)->musical_b() && i+1 < cols.size())
@@ -551,7 +581,7 @@ Spring_spacer::calc_idealspacing()
 
   /* 
      Then musicals
-     */
+  */
   for (int i=0; i < cols.size(); i++)
     {
       if (scol_l (i)->musical_b())
diff --git a/lily/stem-grav.cc b/lily/stem-grav.cc
index 1a552bcf2c..544da9c59f 100644
--- a/lily/stem-grav.cc
+++ b/lily/stem-grav.cc
@@ -77,7 +77,7 @@ Stem_engraver::do_pre_move_processing()
   if (stem_p_)
     {
       Scalar prop = get_property ("ydirection");
-      dir_ = prop.isnum_b () ? int(prop) : CENTER;
+      dir_ = prop.isnum_b () ? (Direction)int(prop) : CENTER;
       if (dir_)
 	stem_p_->dir_ = dir_;
 
diff --git a/lily/super-elem.cc b/lily/super-elem.cc
index 0cc425198c..3e9d8d0f70 100644
--- a/lily/super-elem.cc
+++ b/lily/super-elem.cc
@@ -52,6 +52,8 @@ enum Score_elem_status {
   PREBROKEN,
   PRECALCING,
   PRECALCED,		// calcs before spacing done
+  SPACING,
+  SPACED,
   BROKEN,
   POSTCALCING,		// busy calculating. This is used to trap cyclic deps.
   POSTCALCED,		// after spacing calcs done
@@ -67,6 +69,12 @@ Super_elem::pre_processing ()
   calcalute_dependencies (PRECALCING, PRECALCED, &Score_elem::do_pre_processing);
 }
 
+void
+Super_elem::space_processing ()
+{
+  calcalute_dependencies (SPACING, SPACED, &Score_elem::do_space_processing);
+}
+
 /* for break processing, use only one status, because copies have to
   have correct status. (Previously,
   Score_elem::handle_[pre]broken_dependencies assigned to status_i_
diff --git a/lily/template4.cc b/lily/template4.cc
index 8975172e83..820b07be3d 100644
--- a/lily/template4.cc
+++ b/lily/template4.cc
@@ -9,10 +9,12 @@
 #include "proto.hh"
 #include "pcursor.hh"
 #include "plist.hh"
+/*
 #include "audio-item.hh"
 #include "audio-staff.hh"
 #include "p-col.hh"
 #include "p-score.hh"
+*/
 #include "cursor.tcc"
 #include "list.tcc"
 #include "pcursor.tcc"
diff --git a/lily/tex-slur.cc b/lily/tex-slur.cc
index 8fb616fcb7..9e116df08e 100644
--- a/lily/tex-slur.cc
+++ b/lily/tex-slur.cc
@@ -179,7 +179,7 @@ Lookup::ps_slur (Real dy , Real dx, Real ht, Real dir) const
 Atom
 Lookup::tex_slur (int dy , Real &dx, Direction dir) const
 {
-  assert (abs (dir) <= 1);
+  assert (abs ((int)dir) <= 1);
   Atom s;
   Direction y_sign = (Direction) sign (dy);
 
diff --git a/lily/text-item.cc b/lily/text-item.cc
index 952e917052..c471fa1453 100644
--- a/lily/text-item.cc
+++ b/lily/text-item.cc
@@ -65,10 +65,9 @@ Text_item::brew_molecule_p () const
 {
   Atom a (tdef_p_->get_atom (paper (), dir_));
 
-  /*
-    if (fat_b_)
-    a.sym.dim.x = tdef_p_->width (paper ());
-    */
+
+  if (fat_b_)
+    a.dim_[X_AXIS] = tdef_p_->width (paper ());
   Molecule* mol_p = new Molecule (a);
 
   if (dir_<0)		// should do something better anyway.
diff --git a/lily/tie.cc b/lily/tie.cc
index fb929047e6..de7b328b11 100644
--- a/lily/tie.cc
+++ b/lily/tie.cc
@@ -53,7 +53,7 @@ Tie::do_add_processing()
   do {
     if (!head_l_drul_[d])
       new_head_drul[d] = head_l_drul_[(Direction)-d];
-  } while ((d *= -1) != LEFT);
+  } while (flip(&d) != LEFT);
   head_l_drul_ = new_head_drul;
 }
 
@@ -86,7 +86,7 @@ Tie::do_post_processing()
 		       ? head_l_drul_[d]->position_i_
 		       : head_l_drul_[(Direction)-d]->position_i_);
     }
-  while ((d *= -1) != LEFT);
+  while (flip(&d) != LEFT);
 
   do
     {
@@ -108,7 +108,7 @@ Tie::do_post_processing()
 			        -0.5 * nw_f);
 	}
     }
-  while ((d *= -1) != LEFT);
+  while (flip(&d) != LEFT);
 }
 
 void
diff --git a/lily/vertical-align-grav.cc b/lily/vertical-align-grav.cc
index 94f5d05204..fe773a9375 100644
--- a/lily/vertical-align-grav.cc
+++ b/lily/vertical-align-grav.cc
@@ -9,6 +9,7 @@
 #include "p-col.hh"
 #include "vertical-align-grav.hh"
 #include "vertical-align-spanner.hh"
+#include "vertical-group-elem.hh"
 
 Vertical_align_engraver::Vertical_align_engraver()
 {
diff --git a/lily/vertical-group-elem.cc b/lily/vertical-group-elem.cc
new file mode 100644
index 0000000000..ade65c5dd6
--- /dev/null
+++ b/lily/vertical-group-elem.cc
@@ -0,0 +1,38 @@
+/*
+  vertical-group-elem.cc -- implement Horizontal_vertical_group_element
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+#include "vertical-group-elem.hh"
+#include "interval.hh"
+#include "item.hh"
+#include "debug.hh"
+
+void
+Vertical_group_element::add_element (Graphical_element*e)
+{
+  axis_admin_.add_element (e, this, Y_AXIS, Y_AXIS);
+}
+
+void
+Vertical_group_element::remove_element (Graphical_element*e)
+{
+  axis_admin_.remove_element (e, Y_AXIS, Y_AXIS);
+}
+
+
+Interval
+Vertical_group_element::do_height() const
+{
+  return axis_admin_.extent (Y_AXIS);
+}
+void
+Vertical_group_element::remove_all()
+{
+  axis_admin_.remove_all (Y_AXIS,Y_AXIS);
+}
+
+IMPLEMENT_IS_TYPE_B1(Vertical_group_element, Axis_group_element);
diff --git a/lily/vertical-group-spanner.cc b/lily/vertical-group-spanner.cc
index 2e11db7420..abae14aa02 100644
--- a/lily/vertical-group-spanner.cc
+++ b/lily/vertical-group-spanner.cc
@@ -11,3 +11,4 @@
 #include "p-col.hh"
 
 IMPLEMENT_IS_TYPE_B2(Vertical_group_spanner, Axis_group_spanner, Vertical_group_element);
+
diff --git a/lily/word-wrap.cc b/lily/word-wrap.cc
index 6b7abf398b..c41e3ed9b2 100644
--- a/lily/word-wrap.cc
+++ b/lily/word-wrap.cc
@@ -41,6 +41,7 @@ Word_wrap::do_solve() const
       // do  another line
       line_no_i ++;
       Paper_column *post = breakpoints[break_idx_i]->postbreak_l();
+      int start_break_idx = break_idx_i;
       current.add (post);
       curcol++;		// skip the breakable.
       break_idx_i++;
@@ -75,7 +76,6 @@ Word_wrap::do_solve() const
 	    }
 	  else
 	    {
-
 	      current.solve_line();
 	      current.print();
 	    }
@@ -83,7 +83,13 @@ Word_wrap::do_solve() const
 	  delete current.spacer_l_;
 	  current.spacer_l_ =0;
 
-	  // update minimum, or backup.
+	  if (!current.satisfies_constraints_b_ && start_break_idx == break_idx_i - 1)
+	    {
+	      warning ( _ ("I don't fit.  Put me on Montignac"));
+	      minimum = current;
+	      break;
+	    }
+
 	  if (current.energy_f_ < minimum.energy_f_ || current.energy_f_ < 0)
 	    {
 	      minimum = current;
diff --git a/make/Makefile.am b/make/Makefile.am
index ec0a09f422..76713abe78 100644
--- a/make/Makefile.am
+++ b/make/Makefile.am
@@ -36,4 +36,4 @@ lilypond.spec: lilypond.spec.in ../VERSION
 	cat $< | $(SED_VERSION) | $(SED_DATE) > $@
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/make/Makefile.in b/make/Makefile.in
index cbd578ad79..0d96b7effb 100644
--- a/make/Makefile.in
+++ b/make/Makefile.in
@@ -220,7 +220,7 @@ lilypond.spec: lilypond.spec.in ../VERSION
 	cat $< | $(SED_VERSION) | $(SED_DATE) > $@
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/make/lelievijver.lsm b/make/lelievijver.lsm
index 4718bdc78e..df611c045a 100644
--- a/make/lelievijver.lsm
+++ b/make/lelievijver.lsm
@@ -1,7 +1,7 @@
 Begin3
 Titel: LilyPond
 Versie: 
-Inschrijf datum: 27MAR98
+Inschrijf datum: 31MAR98
 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: 
diff --git a/make/lilypond.lsm b/make/lilypond.lsm
index 0b8664a06b..6b44b2b0dd 100644
--- a/make/lilypond.lsm
+++ b/make/lilypond.lsm
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
 Version: 
-Entered-date: 27MAR98
+Entered-date: 31MAR98
 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 
diff --git a/make/lilypond.spec b/make/lilypond.spec
index 1d9ea56f92..da643e9d46 100644
--- a/make/lilypond.spec
+++ b/make/lilypond.spec
@@ -32,7 +32,7 @@ make -C Documentation gifs
 make prefix="$RPM_BUILD_ROOT/usr" install
 %files
 %doc Documentation/AUTHORS.txt Documentation/CodingStyle.txt Documentation/INSTALL.txt Documentation/MANIFESTO.txt Documentation/PATCHES.txt Documentation/convert-mudela.txt Documentation/faq.txt Documentation/gnu-music.txt Documentation/index.txt Documentation/internals.txt Documentation/language.txt Documentation/lilypond.txt Documentation/links.txt Documentation/literature.txt Documentation/ly2dvi.txt Documentation/mi2mu.txt Documentation/mudela-book.txt Documentation/mutopia.txt Documentation/other-packages.txt BUGS TODO NEWS DEDICATION ANNOUNCE README
-%doc input/beam-bug.ly input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/denneboom.ly input/dummy.tex 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/praeludium-fuga-E.ly input/rhythm.ly input/scales.ly input/scripts.ly input/sleur.ly input/slurs.ly input/spacing.ly input/stem.ly input/tril.ly input/twinkle-pop.ly input/twinkle.ly Documentation/introduction.doc Documentation/mudela-course.doc Documentation/mudela-man.doc 
+%doc input/beam-bug.ly input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/denneboom.ly input/dummy.tex 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/praeludium-fuga-E.ly input/rhythm.ly input/scales.ly input/scripts.ly input/sleur.ly input/slurs.ly input/spacing.ly input/stem.ly input/test-lyrics.ly input/tril.ly input/twinkle-pop.ly input/twinkle.ly Documentation/introduction.doc 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/mf/Makefile.am b/mf/Makefile.am
index 91a0273e89..625a9a8808 100644
--- a/mf/Makefile.am
+++ b/mf/Makefile.am
@@ -25,21 +25,34 @@ texout = $(depth)/tex
 LYTABLES = $(addprefix $(lyout)/, $(FET_FILES:.mf=.ly))
 TEXTABLES = $(addprefix $(texout)/, $(FET_FILES:.mf=.tex))
 
-default: all $(LYTABLES) $(TEXTABLES)
 
-localclean:
-	rm -f $(LYTABLES) $(TEXTABLES) 
+all-local: $(LYTABLES) $(TEXTABLES)
 
-localrealclean: 
-	rm -f $(MFDEPS)
+dist-hook: $(LYTABLES) $(TEXTABLES)
 
-localinstall:
+clean-local:
+	-rm -f $(LYTABLES) $(TEXTABLES)
+	-rm -f *.log
+
+distclean-local:
+	-rm -f $(MFDEPS)
+
+install-data-local:
 	$(INSTALL) -d $(MFDIR)/public/lilypond
+	$(INSTALL) -d $(TEXDIR)/lilypond
+	$(INSTALL) -d $(datadir)/lilypond/init
 	$(INSTALL) -m 644 $(MFFILES) $(MFDIR)/public/lilypond/
+	$(INSTALL) -m 644 $(TEXTABLES) $(TEXDIR)/lilypond
+	$(INSTALL) -m 644 $(LYTABLES) $(datadir)/lilypond/init/
 
-localuninstall:
-	for i in $(MFFILES) ; do rm -f $(MFDIR)/lilypond/$$i; done
-	-rmdir $(MFDIR)/public/lilypond/
+uninstall-local:
+	for i in $(MFFILES) ; do rm -f $(MFDIR)/public/lilypond/$$i; done
+	for i in $(TEXTABLES) ; do rm -f $(TEXDIR)/lilypond/$$i; done
+	for i in $LYTABLES) ; do rm -f $(datadir)/lilypond/init/$$i; done
+	-rmdir $(MFDIR)/public/lilypond
+	-rmdir $(TEXDIR)/lilypond
+	-rmdir $(datadir)/lilypond/init
+	-rmdir $(datadir)/lilypond
 
 include $(srcdir)/Rules.make
 
@@ -47,6 +60,5 @@ include $(srcdir)/Rules.make
 #
 include $(MFDEPS)
 #
-
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/mf/Makefile.am.wild b/mf/Makefile.am.wild
index b12f046b9c..245d7f7eb6 100644
--- a/mf/Makefile.am.wild
+++ b/mf/Makefile.am.wild
@@ -22,21 +22,34 @@ texout = $(depth)/tex
 LYTABLES = $(addprefix $(lyout)/, $(FET_FILES:.mf=.ly))
 TEXTABLES = $(addprefix $(texout)/, $(FET_FILES:.mf=.tex))
 
-default: all $(LYTABLES) $(TEXTABLES)
 
-localclean:
-	rm -f $(LYTABLES) $(TEXTABLES) 
+all-local: $(LYTABLES) $(TEXTABLES)
 
-localrealclean: 
-	rm -f $(MFDEPS)
+dist-hook: $(LYTABLES) $(TEXTABLES)
 
-localinstall:
+clean-local:
+	-rm -f $(LYTABLES) $(TEXTABLES)
+	-rm -f *.log
+
+distclean-local:
+	-rm -f $(MFDEPS)
+
+install-data-local:
 	$(INSTALL) -d $(MFDIR)/public/lilypond
+	$(INSTALL) -d $(TEXDIR)/lilypond
+	$(INSTALL) -d $(datadir)/lilypond/init
 	$(INSTALL) -m 644 $(MFFILES) $(MFDIR)/public/lilypond/
-
-localuninstall:
-	for i in $(MFFILES) ; do rm -f $(MFDIR)/lilypond/$$i; done
-	-rmdir $(MFDIR)/public/lilypond/
+	$(INSTALL) -m 644 $(TEXTABLES) $(TEXDIR)/lilypond
+	$(INSTALL) -m 644 $(LYTABLES) $(datadir)/lilypond/init/
+
+uninstall-local:
+	for i in $(MFFILES) ; do rm -f $(MFDIR)/public/lilypond/$$i; done
+	for i in $(TEXTABLES) ; do rm -f $(TEXDIR)/lilypond/$$i; done
+	for i in $LYTABLES) ; do rm -f $(datadir)/lilypond/init/$$i; done
+	-rmdir $(MFDIR)/public/lilypond
+	-rmdir $(TEXDIR)/lilypond
+	-rmdir $(datadir)/lilypond/init
+	-rmdir $(datadir)/lilypond
 
 include $(srcdir)/Rules.make
 
@@ -44,4 +57,3 @@ include $(srcdir)/Rules.make
 #
 include $(MFDEPS)
 #
-
diff --git a/mf/Makefile.in b/mf/Makefile.in
index c107b24b5d..d756398758 100644
--- a/mf/Makefile.in
+++ b/mf/Makefile.in
@@ -155,6 +155,7 @@ distdir: $(DISTFILES)
 	  || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
 	  || cp -p $$d/$$file $(distdir)/$$file; \
 	done
+	$(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
 info:
 dvi:
 check: all
@@ -163,15 +164,15 @@ installcheck:
 install-exec: 
 	@$(NORMAL_INSTALL)
 
-install-data: 
+install-data: install-data-local
 	@$(NORMAL_INSTALL)
 
 install: install-exec install-data all
 	@:
 
-uninstall: 
+uninstall: uninstall-local
 
-all: Makefile
+all: Makefile all-local
 
 install-strip:
 	$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
@@ -194,9 +195,9 @@ maintainer-clean-generic:
 	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 mostlyclean:  mostlyclean-generic
 
-clean:  clean-generic mostlyclean
+clean:  clean-generic mostlyclean clean-local
 
-distclean:  distclean-generic clean
+distclean:  distclean-generic clean distclean-local
 	-rm -f config.status
 	-rm -f libtool
 
@@ -210,21 +211,33 @@ distclean-generic clean-generic maintainer-clean-generic clean \
 mostlyclean distclean maintainer-clean
 
 
-default: all $(LYTABLES) $(TEXTABLES)
+all-local: $(LYTABLES) $(TEXTABLES)
 
-localclean:
-	rm -f $(LYTABLES) $(TEXTABLES) 
+dist-hook: $(LYTABLES) $(TEXTABLES)
 
-localrealclean: 
-	rm -f $(MFDEPS)
+clean-local:
+	-rm -f $(LYTABLES) $(TEXTABLES)
+	-rm -f *.log
 
-localinstall:
+distclean-local:
+	-rm -f $(MFDEPS)
+
+install-data-local:
 	$(INSTALL) -d $(MFDIR)/public/lilypond
+	$(INSTALL) -d $(TEXDIR)/lilypond
+	$(INSTALL) -d $(datadir)/lilypond/init
 	$(INSTALL) -m 644 $(MFFILES) $(MFDIR)/public/lilypond/
-
-localuninstall:
-	for i in $(MFFILES) ; do rm -f $(MFDIR)/lilypond/$$i; done
-	-rmdir $(MFDIR)/public/lilypond/
+	$(INSTALL) -m 644 $(TEXTABLES) $(TEXDIR)/lilypond
+	$(INSTALL) -m 644 $(LYTABLES) $(datadir)/lilypond/init/
+
+uninstall-local:
+	for i in $(MFFILES) ; do rm -f $(MFDIR)/public/lilypond/$$i; done
+	for i in $(TEXTABLES) ; do rm -f $(TEXDIR)/lilypond/$$i; done
+	for i in $LYTABLES) ; do rm -f $(datadir)/lilypond/init/$$i; done
+	-rmdir $(MFDIR)/public/lilypond
+	-rmdir $(TEXDIR)/lilypond
+	-rmdir $(datadir)/lilypond/init
+	-rmdir $(datadir)/lilypond
 
 include $(srcdir)/Rules.make
 
@@ -232,9 +245,8 @@ include $(srcdir)/Rules.make
 #
 include $(MFDEPS)
 #
-
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/mi2mu/Makefile.am b/mi2mu/Makefile.am
index 2b98699c08..bffa487cb2 100644
--- a/mi2mu/Makefile.am
+++ b/mi2mu/Makefile.am
@@ -13,7 +13,7 @@ SUBDIRS = include
 
 bin_PROGRAMS = mi2mu
 
-mi2mu_SOURCES = main.cc mi2mu-version.cc midi-parser.cc midi-score-parser.cc midi-track-parser.cc mudela-column.cc mudela-item.cc mudela-score.cc mudela-staff.cc mudela-stream.cc mudela-voice.cc template.cc version.cc
+mi2mu_SOURCES = main.cc mi2mu-version.cc midi-parser.cc midi-score-parser.cc midi-track-parser.cc mudela-column.cc mudela-item.cc mudela-score.cc mudela-staff.cc mudela-stream.cc mudela-voice.cc template9.cc version.cc
 
 # ugh -lfl bo lib/FlexLexer stuff
 #mi2mu_LDADD = -llily -lflower -lfl
@@ -31,5 +31,8 @@ all-am: Makefile $(PROGRAMS) wild-check
 
 # dummy target for non-GNU makes; is overridden in GNUmakefile
 wild-check:
+
+distclean-local:
+	-rm -rf .deps
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/mi2mu/Makefile.am.wild b/mi2mu/Makefile.am.wild
index 4607947121..cced5f0300 100644
--- a/mi2mu/Makefile.am.wild
+++ b/mi2mu/Makefile.am.wild
@@ -28,3 +28,6 @@ all-am: Makefile $(PROGRAMS) wild-check
 
 # dummy target for non-GNU makes; is overridden in GNUmakefile
 wild-check:
+
+distclean-local:
+	-rm -rf .deps
diff --git a/mi2mu/Makefile.in b/mi2mu/Makefile.in
index 4401cee22f..61945fc469 100644
--- a/mi2mu/Makefile.in
+++ b/mi2mu/Makefile.in
@@ -109,7 +109,7 @@ SUBDIRS = include
 
 bin_PROGRAMS = mi2mu
 
-mi2mu_SOURCES = main.cc mi2mu-version.cc midi-parser.cc midi-score-parser.cc midi-track-parser.cc mudela-column.cc mudela-item.cc mudela-score.cc mudela-staff.cc mudela-stream.cc mudela-voice.cc template.cc version.cc
+mi2mu_SOURCES = main.cc mi2mu-version.cc midi-parser.cc midi-score-parser.cc midi-track-parser.cc mudela-column.cc mudela-item.cc mudela-score.cc mudela-staff.cc mudela-stream.cc mudela-voice.cc template9.cc version.cc
 
 # ugh -lfl bo lib/FlexLexer stuff
 #mi2mu_LDADD = -llily -lflower -lfl
@@ -131,8 +131,8 @@ LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
 mi2mu_OBJECTS =  main.o mi2mu-version.o midi-parser.o \
 midi-score-parser.o midi-track-parser.o mudela-column.o mudela-item.o \
-mudela-score.o mudela-staff.o mudela-stream.o mudela-voice.o template.o \
-version.o
+mudela-score.o mudela-staff.o mudela-stream.o mudela-voice.o \
+template9.o version.o
 mi2mu_DEPENDENCIES =  $(top_builddir)/lib/liblily.la \
 $(top_builddir)/flower/libflower.la
 mi2mu_LDFLAGS = 
@@ -429,7 +429,8 @@ mudela-score.o: mudela-score.cc ../lib/include/moment.hh \
 	../flower/include/iterate.hh ../flower/include/plist.icc \
 	include/mudela-item.hh include/mudela-score.hh \
 	../flower/include/parray.hh include/mudela-staff.hh \
-	include/mudela-stream.hh
+	include/mudela-stream.hh ../flower/include/list.tcc \
+	../flower/include/cursor.tcc
 mudela-staff.o: mudela-staff.cc ../lib/include/moment.hh \
 	../flower/include/rational.hh ../flower/include/compare.hh \
 	../flower/include/arithmetic-operator.hh \
@@ -493,6 +494,25 @@ template.o: template.cc ../lib/include/proto.hh \
 	../lib/include/plet.hh include/mudela-column.hh \
 	include/mudela-staff.hh include/mudela-voice.hh \
 	../flower/include/plist.tcc
+template9.o: template9.cc ../lib/include/proto.hh \
+	../flower/include/fproto.hh ../flower/include/real.hh \
+	../flower/include/list.hh ../flower/include/list.icc \
+	../flower/include/cursor.hh ../flower/include/link.hh \
+	../flower/include/link.icc ../flower/include/compare.hh \
+	../flower/include/pcursor.hh ../flower/include/plist.hh \
+	../flower/include/plist.icc ../flower/include/cursor.icc \
+	../flower/include/iterate.hh ../flower/include/list.tcc \
+	../flower/include/cursor.tcc include/mudela-item.hh \
+	include/mi2mu-proto.hh ../flower/include/string.hh \
+	../flower/include/arithmetic-operator.hh \
+	../flower/include/string-handle.hh \
+	../flower/include/international.hh ../lib/include/moment.hh \
+	../flower/include/rational.hh ../lib/include/duration.hh \
+	../lib/include/plet.hh include/mudela-column.hh \
+	include/mudela-staff.hh include/mudela-voice.hh \
+	include/mudela-score.hh ../flower/include/parray.hh \
+	../flower/include/varray.hh ../flower/include/pcursor.tcc \
+	../flower/include/plist.tcc
 version.o: version.cc ../lib/include/proto.hh \
 	../flower/include/fproto.hh ../flower/include/real.hh \
 	../flower/include/string.hh \
@@ -563,7 +583,7 @@ mostlyclean:  mostlyclean-recursive mostlyclean-am
 
 clean:  clean-recursive clean-am
 
-distclean:  distclean-recursive distclean-am
+distclean:  distclean-recursive distclean-am distclean-local
 	-rm -f config.status
 	-rm -f libtool
 
@@ -593,8 +613,11 @@ all-am: Makefile $(PROGRAMS) wild-check
 
 # dummy target for non-GNU makes; is overridden in GNUmakefile
 wild-check:
+
+distclean-local:
+	-rm -rf .deps
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/mi2mu/include/Makefile.am b/mi2mu/include/Makefile.am
index 63032f9bbf..ca22f222b5 100644
--- a/mi2mu/include/Makefile.am
+++ b/mi2mu/include/Makefile.am
@@ -8,4 +8,4 @@ noinst_HEADERS = mi2mu-global.hh mi2mu-proto.hh midi-parser.hh midi-score-parser
 EXTRA_DIST = Makefile.am.wild
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/mi2mu/include/Makefile.in b/mi2mu/include/Makefile.in
index 10a1bfd137..cb19558093 100644
--- a/mi2mu/include/Makefile.in
+++ b/mi2mu/include/Makefile.in
@@ -218,7 +218,7 @@ mostlyclean distclean maintainer-clean
 
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/mi2mu/mudela-score.cc b/mi2mu/mudela-score.cc
index bf025d7ca0..3f8573c96f 100644
--- a/mi2mu/mudela-score.cc
+++ b/mi2mu/mudela-score.cc
@@ -14,6 +14,10 @@
 #include "mudela-staff.hh"
 #include "mudela-stream.hh"
 
+// ugh, cygnus' b19 gcc
+#include "list.tcc"
+#include "cursor.tcc"
+
 //static Mudela_key key_c (0, 0);
 static Mudela_meter meter_4 (4, 2, 24, 8);
 // useconds per 4: 250000 === 60 4 per minute
@@ -258,3 +262,4 @@ Mudela_score::settle_columns()
       start_i = end_i = 0;
     }
 }
+
diff --git a/mi2mu/template.cc b/mi2mu/template.cc
deleted file mode 100644
index 856ff12464..0000000000
--- a/mi2mu/template.cc
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// template.cc -- implementemplate
-//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
-
-#include "proto.hh"
-#include "list.hh"
-#include "list.tcc"
-#include "cursor.tcc"
-
-class istream;
-class ostream;
-
-#include "mudela-item.hh"
-#include "mudela-column.hh"
-#include "mudela-staff.hh"
-#include "mudela-voice.hh"
-#include "plist.hh"
-#include "plist.tcc"
-
-POINTERLIST_INSTANTIATE(Mudela_item);
-POINTERLIST_INSTANTIATE(Mudela_staff);
-POINTERLIST_INSTANTIATE(Mudela_voice);
-POINTERLIST_INSTANTIATE(Mudela_voice);
-POINTERLIST_INSTANTIATE(Mudela_column);
-
diff --git a/mutopia/J.S.Bach/Makefile.am b/mutopia/J.S.Bach/Makefile.am
index bf2a5e5cd6..f61b263308 100644
--- a/mutopia/J.S.Bach/Makefile.am
+++ b/mutopia/J.S.Bach/Makefile.am
@@ -13,4 +13,4 @@ OUTFILES = $(M4FILES:%.m4=%)
 default: all $(OUTFILES)
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/mutopia/J.S.Bach/Makefile.in b/mutopia/J.S.Bach/Makefile.in
index 8e8f9f535c..79863de42f 100644
--- a/mutopia/J.S.Bach/Makefile.in
+++ b/mutopia/J.S.Bach/Makefile.in
@@ -197,7 +197,7 @@ mostlyclean distclean maintainer-clean
 default: all $(OUTFILES)
 
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/mutopia/J.S.Bach/wtk1-fugue2.ly b/mutopia/J.S.Bach/wtk1-fugue2.ly
index 0b9e7fcabc..a2bd3542b2 100644
--- a/mutopia/J.S.Bach/wtk1-fugue2.ly
+++ b/mutopia/J.S.Bach/wtk1-fugue2.ly
@@ -1,188 +1,191 @@
-\header{
-filename =	 "wohltemperirt.ly";
-title =	 "Fuga a 3";
-description =	 "Das Wohltemperierte Clavier I, Fuga II (c-minor)";
-opus =	 "BWV 847-Fuga";
-source =	 "Henle's Urtext";
-composer =	 "Johann Sebastian Bach (1685-1750)";
-enteredby =	 "HWN and Werner Lemberg";
-copyright =	 "Public Domain";
+\header {
+  filename =    "wtk1-fugue2.ly";
+  title =       "Fuga a 3";
+  description = "Das Wohltemperierte Clavier I, Fuga II (c-minor)";
+  opus =        "BWV 847-Fuga";
+  source =      "Henle's Urtext";
+  composer =    "Johann Sebastian Bach (1685-1750)";
+  enteredby =   "HWN, WL";
+  copyright =   "Public Domain";
 }
+
 %{
  Tested Features: stem direction, multivoice, forced accidentals.
 %}
 
 \version "0.1.9";
 
-keyCminor = \melodic \key bes es as;
-                                    % should add \need{dutch.ini} for
-                                    % correct parsing of note names
+\include "dutch.ly"                 % for correct parsing of note names
 
 global = \melodic {
-         \meter 4/4;                % should be \meter C
-         \keyCminor 
-	 \skip 1*31;
-	 \bar "|."; |
+  \meter 4/4;
+  \key bes es as;
+  \skip 1*31;
+  \bar "|."; |
 }
   
 dux = \melodic {
-        \clef "violin";
-        \octave c';
+  \clef violin;
+  \octave c';
 
-        \stemdown
-        r8 [c'16 b] [c'8 g] [as c'16 b] [c'8 d'] |
-        [g c'16 b] [c'8 d'] [f16 g] as4 [g16 f] |
-        [es c' b a] [g f! es d] [c8 es' d' c'] |
-        [bes a bes c'] [fis g a fis] |
+  \stemdown
+  r8 [c'16 b] [c'8 g] [as c'16 b] [c'8 d'] |
+  [g c'16 b] [c'8 d'] [f16 g] as4 [g16 f] |
+  [es c' b a] [g f! es d] [c8 es' d' c'] |
+  [bes a bes c'] [fis g a fis] |
 %% 5
-        g4 r16 [c d es] [f g as8~] [as16 d es f] |
-        [g a bes8~] [bes16 es f g] [as g f es] [d8 c'16 b!] |
+  g4 r16 [c d es] [f g as8~] [as16 d es f] |
+  [g a bes8] ~ [bes16 es f g] [as g f es] [d8 c'16 b!] |
                                                     % forced accident!
-        c'4 r4 r8 [f' es' d'] |
-        r8 [as g f] [g f16 es] [f8 d] | 
-        g4 r8 b [c' c'16 b] [c'8 g] |
+  c'4 r4 r8 [f' es' d'] |
+  r8 [as g f] [g f16 es] [f8 d] | 
+  g4 r8 b [c' c'16 b] [c'8 g] |
 %% 10   
-        as4 r8 a [bes bes16 a] [bes8 f] |
-        g4 r8 g [as as g f] |
-	\translator Staff=bass \stemup
-        \octave c; r8 [as bes c'] r8 [as16 g] [as8 f8] |
-        [bes8 c' bes as] [bes g f es] |
-        [f des' c' bes] [c' as g f] |
+  as4 r8 a [bes bes16 a] [bes8 f] |
+  g4 r8 g [as as g f] |
+  \translator Staff = bass \stemup \octave c;
+   r8 [as bes c'] r8 [as16 g] [as8 f8] |
+  [bes8 c' bes as] [bes g f es] |
+  [f des' c' bes] [c' as g f] |
 %% 15
-	\translator Staff=treble \stemdown
-        g8 \octave c'; [g16 fis] [g8 c] [es g16 fis!] [g8 a] |
-        [d g16 fis] [g8 a!] [c16 d] es4 [d16 c] |
-                                                    % forced accident!
-        'bes8 r8 r16 [d e fis] [g a bes8~] [bes16 e f g] |
-        [a bes c'8~] [c'16 fis16 g a] [bes8 es!16 d] [es8 'g] |
-        ['as f16 es] [f8 'a8] ['bes g16 f] [g8 'b] |
+  g8
+   \translator Staff = treble \stemdown \octave c';
+   [g16 fis] [g8 c] [es g16 fis!] [g8 a] |
+  [d g16 fis] [g8 a!] [c16 d] es4 [d16 c] |         % forced accident!
+  'bes8 r8 r16 [d e fis] [g a bes8] ~ [bes16 e f g] |
+  [a bes c'8] ~ [c'16 fis16 g a] [bes8 es!16 d] [es8 'g] |
+  ['as f16 es] [f8 'a8] ['bes g16 f] [g8 'b] |
 %% 20
-        [c16 f es d] [c Bes! As G] [F8 as g f] |
-        [es d es f] [B c d B] |
-        c4 r8 e8 [f f16 e] [f8 c] |
-        d4 r8 d8 [es8 es16 d] [es8 Bes] |
-        c2 ~  [c8 d16 es][ f es f d] |
+  [c16 f es d] [c Bes! As G] [F8 as g f] |
+  [es d es f] [B c d B] |
+  c4 r8 e8 [f f16 e] [f8 c] |
+  d4 r8 d8 [es8 es16 d] [es8 Bes] |
+  c2 ~ [c8 d16 es] [f es f d] |
 %% 25
-        B8 r8 r B c r r es |
-        d r r f~ f r r f |
-        [es as g f] [es d es f] |
-        [B c d B] [B c] r c |
-        [f16 d es c]~ [c8 B] c4 r8 e |
+  B8 r8 r B c r r es |
+  d r r f ~ f r r f |
+  [es as g f] [es d es f] |
+  [B c d B] [B c] r c |
+  [f16 d es c] ~ [c8 B] c4 r8 e |
 %% 30
-        f4 r8 f [f es16 d] [es8 <f as]> |
-        <B d> r <B d> r <G2 c> |
+  f4 r8 f [f es16 d] [es8 <f as]> |
+  <B d> r <B d> r <G2 c> |
 }
 
 
 comes = \melodic {
-        \octave c'';
-        \stemup
-        r1 |
-        r1 |
-        r8 [g16 fis] [g8 c] [es g16 fis] [g8 a] |
-        [d8 g16 fis] [g8 a] [c16 d] es4 [d16 c] |
+  \octave c'';
+  \stemup
+
+  r1 |
+  r1 |
+  r8 [g16 fis] [g8 c] [es g16 fis] [g8 a] |
+  [d8 g16 fis] [g8 a] [c16 d] es4 [d16 c] |
 %% 5
-        ['bes8 es16 d] [es8 'g8] ['as f16 es] [f8 'a] 
-        ['bes8 g16 f] [g8 'b] [c8 d16 es] f4~ |
-        [f8 es16 d] [c16 'bes! 'as 'g] ['f8 as g f] 
-        [es d es f] ['b c d 'b] |
-        [c g16 fis] [g8 d] es4 r8 e8 |
+  ['bes8 es16 d] [es8 'g8] ['as f16 es] [f8 'a] 
+  ['bes8 g16 f] [g8 'b] [c8 d16 es] f4 ~ |
+  [f8 es16 d] [c16 'bes! 'as 'g] ['f8 as g f] 
+  [es d es f] ['b c d 'b] |
+  [c g16 fis] [g8 d] es4 r8 e8 |
 %% 10 
-        [f f16 e] [f8 c8] d4 r8 d |
-        [es8 es16 d] [es8 'bes] [c es16 d] [es8 f] |
-        ['bes es16 d] [es8 f] ['as16 'bes] c4 ['bes16 'as] |
-        [G16 Es F G] [As Bes c d] [es d c d] [es f g a] |
-        [bes F G As] [Bes c d e] [f es d es] [ f g a b] |
+  [f f16 e] [f8 c8] d4 r8 d |
+  [es8 es16 d] [es8 'bes] [c es16 d] [es8 f] |
+  \stemboth ['bes es16 d] [es8 f] ['as16 'bes] c4 ['bes16 'as] |
+  [G16 Es F G] [As Bes c d] [es d c d] [es f g a] |
+  [bes F G As] [Bes c d e] [f es d es] [ f g a b] |
 %% 15
-        [c'8 b16 a] [g f! es d] [c8 es d c] |
-        [Bes A Bes c] [Fis! G A Fis] |
-                                                    % forced accident
-        [G8 d16 c] d8 r8 r8 [e16 d] e8 r8 |
-        r [fis16 e] fis8 r r [G16 F] G8 r8 |
-        r8 [A16 G] A8 r r [B16 A] B8 r |
+  \stemup [c'8 b16 a] [g f! es d] [c8 es d c] |
+  [Bes A Bes c] [Fis! G A Fis] |                    % forced accident
+  [G8 d16 c] d8 r8 r8 [e16 d] e8 r8 |
+  r [fis16 e] fis8 r r [G16 F] G8 r8 |
+  r8 [A16 G] A8 r r [B16 A] B8 r |
 %% 20
-        r8 [c16 'b] [c8 'g] [As c16 'b] [c8 d] |
-        [G c16 B] [c8 d] [F16 G] As4 [G16 F] |
-        [Es8 c16 B] [c8 G] As4 r8 A |
-        [Bes8 Bes16 A] [Bes8 F8] 'g4 r8 G~ |
-        [G As16 Bes] [c B c As] F2~ |
+  r8 [c16 'b] [c8 'g] [As c16 'b] [c8 d] |
+  [G c16 B] [c8 d] [F16 G] As4 [G16 F] |
+  [Es8 c16 B] [c8 G] As4 r8 A |
+  [Bes8 Bes16 A] [Bes8 F8] 'g4 r8 G ~ |
+  [G As16 Bes] [c B c As] F2 ~ |
 %% 25
-        [F8 d16 c] [d8 F] [Es es16 d] [es8 G] |
-        [F f16 es] [f8 As] [G16 f es d] [c B A G] |
-        [c8 f es d] r [As G F] |
-        [G F16 Es] [F8 D] [As G] r A |
-        [B c] [F16 Es D C] C8 [c16 B] [c8 G] |
+  [F8 d16 c] [d8 F] [Es es16 d] [es8 G] |
+  [F f16 es] [f8 As] [G16 f es d] [c B A G] |
+  [c8 f es d] r [As G F] |
+  [G F16 Es] [F8 D] [As G] r A |
+  [B c] [F16 Es D C] C8 [c16 B] [c8 G] |
 %% 30
-        [As c16 B] [c8 <d 'b! 'as!]> [G8 c16 B] [c8 d] |
-        [F16 G] As4 [G16 F] E2 |
+  [As c16 B] [c8 <d 'b! 'as!]> [G8 c16 B] [c8 d] |
+  [F16 G] As4 [G16 F] E2 |
 }
 
+
 bassdux = \melodic {
-        \clef "bass";
-        \octave c';
-        r1 |
-        r |
-        r |
-        r |
+  \clef bass;
+  \octave c';
+
+  r1 |
+  r |
+  r |
+  r |
 %% 5
-        r |
-        r1 |
-        r8 [c16 B] [c8 G] [As c16 B] [c8 d] |
-        [G c16 B] [c8 d] [F16 G] As4 [G16 F] | 
-        \octave c; [es c' b a] [g f es d] [c d es d] [c Bes! As! G] |
+  r |
+  r1 |
+  r8 [c16 B] [c8 G] [As c16 B] [c8 d] |
+  [G c16 B] [c8 d] [F16 G] As4 [G16 F] | 
+  \octave c; [es c' b a] [g f es d] [c d es d] [c Bes! As! G] |
                                                     % -> \classic_accidentals
 %% 10
-        [F bes as g] [f es d c] [Bes c d c] [Bes As G F] |
-        [Es as g f] [es des c Bes] [As8 c' bes as] |
-        [g8 f g as] [d es f d] |
-        [es as g f] [g es d c] |
-        [d bes as g] [as f es d!] |
+  [F bes as g] [f es d c] [Bes c d c] [Bes As G F] |
+  [Es as g f] [es des c Bes] [As8 c' bes as] |
+  [g8 f g as] [d es f d] |
+  [es as g f] [g es d c] |
+  [d bes as g] [as f es d!] |
 %% 15
-        es8 r8 r4 r8 [c Bes A] |
-        r [es d c] [d c16 Bes] [c8 d] |
-        [G8 bes16 a] [bes8 d] [es c'16 bes] [c'8 e] |
-        [f d'16 c'] [d'8 fis] g4 r16 [G A B] |
-        [c16 d es8~] [es16 A Bes c] [d es f8~] [f16 'b c d] |
+  es8 r8 r4 r8 [c Bes A] |
+  r [es d c] [d c16 Bes] [c8 d] |
+  [G8 bes16 a] [bes8 d] [es c'16 bes] [c'8 e] |
+  [f d'16 c'] [d'8 fis] g4 r16 [G A B] |
+  [c16 d es8~] [es16 A Bes c] [d es f8~] [f16 'b c d] |
 %% 20    
-        es8 r r e [f F Es! D] |                     % -> \classic_accidentals
-        r [As G F] [G F16 Es] [F8 G] |
-        [c16 d  es d] [c Bes As G] [F bes as g] [f es d c] |
-        [Bes c d c] [Bes As G F] [Es as g f] [es d c Bes] |
-        [As Bes c Bes] [As G F Es] [D g f es] [d c B A] |
+  es8 r r e [f F Es! D] |                           % -> \classic_accidentals
+  r [As G F] [G F16 Es] [F8 G] |
+  [c16 d  es d] [c Bes As G] [F bes as g] [f es d c] |
+  [Bes c d c] [Bes As G F] [Es as g f] [es d c Bes] |
+  [As Bes c Bes] [As G F Es] [D g f es] [d c B A] |
 %% 25
-        G4 r4 r16 [G A B] [c d es f] |
-        [g f as g] [f es d c] [B8 c16 B] [c8 G] |
-        [As c16 B] [c8 d] [G c16 B] [c8 d] |
-        [F16 G] As4 [G16 F] Es4 r8 es |
-        [d c g G]
+  G4 r4 r16 [G A B] [c d es f] |
+  [g f as g] [f es d c] [B8 c16 B] [c8 G] |
+  [As c16 B] [c8 d] [G c16 B] [c8 d] |
+  [F16 G] As4 [G16 F] Es4 r8 es |
+  [d c g G]
 %% 30
-        \multi 2 <
-        	{ \stemup c2~ | c1~ | c1 }
-	        { \stemdown C2~ | C1~ | C1 }
-        >
-    }
+  \multi 2 <
+    { \stemup c2 ~ | c1 ~ | c1 }
+    { \stemdown C2 ~ | C1 ~ | C1 }
+  >
+}
 
         
 \score {
-	\type Grandstaff < 
-	\type Staff=treble  < 
-                       \global 
-                       \dux
-                       \comes 
-                 >
-	\type Staff=bass  <
-                       \global
-                       \bassdux
-                 >
+  \melodic {
+    \type Grandstaff < 
+      \type Staff = treble < 
+        \global 
+        \dux
+        \comes 
+      >
+      \type Staff = bass <
+        \global
+        \bassdux
+      >
     >
+  }
+
+  \paper {
+    gourlay_maxmeasures = 5.;
+  }
 
-    \paper{
-	gourlay_maxmeasures =5.;
-	
-    }
-    \midi {
-        \tempo 4 = 84;
-    }
+  \midi {
+    \tempo 4 = 84;
+  }
 }
 
 % EOF
diff --git a/mutopia/Makefile.am b/mutopia/Makefile.am
index 836601b477..25d76365b6 100644
--- a/mutopia/Makefile.am
+++ b/mutopia/Makefile.am
@@ -14,4 +14,4 @@ OUTFILES = $(M4FILES:%.m4=%)
 
 default: all $(OUTFILES)
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/mutopia/Makefile.in b/mutopia/Makefile.in
index dc925d97cd..aaf6dca564 100644
--- a/mutopia/Makefile.in
+++ b/mutopia/Makefile.in
@@ -285,7 +285,7 @@ maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
 default: all $(OUTFILES)
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tex/Makefile.am b/tex/Makefile.am
index c8167ad27b..927786c873 100644
--- a/tex/Makefile.am
+++ b/tex/Makefile.am
@@ -3,17 +3,17 @@
 # Generated automatically by wild-perl 0.1
 # tex/Makefile.am.wild
 
-TEXFILES = dyndefs.tex eglerdefs.tex fetdefs.tex lily-mf-defs.tex lily-ps-defs.tex lilyponddefs.tex ltest.tex taupindefs.tex titledefs.tex
+TEXFILES = dyndefs.tex eglerdefs.tex feta11.tex feta13.tex feta16.tex feta19.tex feta20.tex feta23.tex feta26.tex fetdefs.tex lily-mf-defs.tex lily-ps-defs.tex lilyponddefs.tex ltest.tex taupindefs.tex titledefs.tex
 EXTRA_DIST = Makefile.am.wild $(TEXFILES)
 
-CLEANFILES = 
+CLEANFILES = feta11.tex feta13.tex feta16.tex feta19.tex feta20.tex feta23.tex feta26.tex
 
-install-data:
+install-data-local:
 	$(INSTALL) -d $(TEXDIR)/lilypond
 	$(INSTALL) -m 644 $(TEXFILES) $(TEXDIR)/lilypond/
 
-uninstall-data:
+uninstall-local:
 	for i in $(TEXFILES) ; do rm -f $(TEXDIR)/lilypond/$$i; done
 	-rmdir $(TEXDIR)/lilypond/
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
\ No newline at end of file
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
\ No newline at end of file
diff --git a/tex/Makefile.am.wild b/tex/Makefile.am.wild
index 1bd3e8c8a1..f9e538d140 100644
--- a/tex/Makefile.am.wild
+++ b/tex/Makefile.am.wild
@@ -5,10 +5,10 @@ EXTRA_DIST = Makefile.am.wild $(TEXFILES)
 
 CLEANFILES = $(wildcard feta*.tex)
 
-install-data:
+install-data-local:
 	$(INSTALL) -d $(TEXDIR)/lilypond
 	$(INSTALL) -m 644 $(TEXFILES) $(TEXDIR)/lilypond/
 
-uninstall-data:
+uninstall-local:
 	for i in $(TEXFILES) ; do rm -f $(TEXDIR)/lilypond/$$i; done
 	-rmdir $(TEXDIR)/lilypond/
diff --git a/tex/Makefile.in b/tex/Makefile.in
index 09c27e4382..96a0f96933 100644
--- a/tex/Makefile.in
+++ b/tex/Makefile.in
@@ -99,10 +99,10 @@ YACC = @YACC@
 ZIP = @ZIP@
 absolute_builddir = @absolute_builddir@
 
-TEXFILES = dyndefs.tex eglerdefs.tex fetdefs.tex lily-mf-defs.tex lily-ps-defs.tex lilyponddefs.tex ltest.tex taupindefs.tex titledefs.tex
+TEXFILES = dyndefs.tex eglerdefs.tex feta11.tex feta13.tex feta16.tex feta19.tex feta20.tex feta23.tex feta26.tex fetdefs.tex lily-mf-defs.tex lily-ps-defs.tex lilyponddefs.tex ltest.tex taupindefs.tex titledefs.tex
 EXTRA_DIST = Makefile.am.wild $(TEXFILES)
 
-CLEANFILES = 
+CLEANFILES = feta11.tex feta13.tex feta16.tex feta19.tex feta20.tex feta23.tex feta26.tex
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = ../lib/config.hh
 CONFIG_CLEAN_FILES = 
@@ -145,13 +145,13 @@ installcheck:
 install-exec: 
 	@$(NORMAL_INSTALL)
 
-install-data: 
+install-data: install-data-local
 	@$(NORMAL_INSTALL)
 
 install: install-exec install-data all
 	@:
 
-uninstall: 
+uninstall: uninstall-local
 
 all: Makefile
 
@@ -192,15 +192,15 @@ distclean-generic clean-generic maintainer-clean-generic clean \
 mostlyclean distclean maintainer-clean
 
 
-install-data:
+install-data-local:
 	$(INSTALL) -d $(TEXDIR)/lilypond
 	$(INSTALL) -m 644 $(TEXFILES) $(TEXDIR)/lilypond/
 
-uninstall-data:
+uninstall-local:
 	for i in $(TEXFILES) ; do rm -f $(TEXDIR)/lilypond/$$i; done
 	-rmdir $(TEXDIR)/lilypond/
 $(srcdir)/Makefile.am: $(srcdir)/Makefile.am.wild
-	$(PERL) $(top_srcdir)/bin/wild-perl < $< > $@
+	$(PERL) $(top_srcdir)/bin/wild-perl --top-srcdir="$(real_topdir)" < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tex/feta11.tex b/tex/feta11.tex
new file mode 100644
index 0000000000..51cd339b9d
--- /dev/null
+++ b/tex/feta11.tex
@@ -0,0 +1,87 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta11.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\quartrest{4}
+\fetdef\eighthrest{5}
+\fetdef\sixteenthrest{6}
+\fetdef\thirtysecondrest{7}
+\fetdef\sixtyfourthrest{8}
+\fetdef\hundredtwentyeighthrest{9}
+
+% accidentals
+\fetdef\sharp{10}
+\fetdef\natural{11}
+\fetdef\flat{12}
+\fetdef\flatflat{13}
+\fetdef\sharpsharp{14}
+
+% dots
+\fetdef\dot{15}
+\fetdef\repeatcolon{16}
+
+% balls
+\fetdef\brevisball{17}
+\fetdef\brevisledger{18}
+\fetdef\longaball{19}
+\fetdef\longaledger{20}
+\fetdef\wholeball{21}
+\fetdef\wholeledger{22}
+\fetdef\halfball{23}
+\fetdef\halfledger{24}
+\fetdef\quartball{25}
+\fetdef\quartledger{26}
+
+% scripts
+\fetdef\ufermata{27}
+\fetdef\dfermata{28}
+\fetdef\sforzatoaccent{29}
+\fetdef\staccato{30}
+\fetdef\ustaccatissimo{31}
+\fetdef\dstaccatissimo{32}
+\fetdef\tenuto{33}
+\fetdef\umarcato{34}
+\fetdef\dmarcato{35}
+\fetdef\ouvert{36}
+\fetdef\plusstop{37}
+\fetdef\upbow{38}
+\fetdef\downbow{39}
+\fetdef\turn{40}
+\fetdef\trill{41}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
+\fetdef\trilelement{47}
+\fetdef\prall{48}
+\fetdef\mordent{49}
+\fetdef\prallprall{50}
+\fetdef\prallmordent{51}
+\fetdef\upprall{52}
+\fetdef\downprall{53}
+
+% flags
+\fetdef\eighthflag{54}
+\fetdef\sixteenthflag{55}
+\fetdef\thirtysecondflag{56}
+\fetdef\sixtyfourthflag{57}
+\fetdef\deighthflag{58}
+\fetdef\dsixteenthflag{59}
+\fetdef\dthirtysecondflag{60}
+\fetdef\dsixtyfourthflag{61}
+
+% clefs
+\fetdef\altoclef{62}
+\fetdef\caltoclef{63}
+\fetdef\bassclef{64}
+\fetdef\cbassclef{65}
+\fetdef\violinclef{66}
+\fetdef\cviolinclef{67}
+
diff --git a/tex/feta13.tex b/tex/feta13.tex
new file mode 100644
index 0000000000..be72ab40af
--- /dev/null
+++ b/tex/feta13.tex
@@ -0,0 +1,87 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta13.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\quartrest{4}
+\fetdef\eighthrest{5}
+\fetdef\sixteenthrest{6}
+\fetdef\thirtysecondrest{7}
+\fetdef\sixtyfourthrest{8}
+\fetdef\hundredtwentyeighthrest{9}
+
+% accidentals
+\fetdef\sharp{10}
+\fetdef\natural{11}
+\fetdef\flat{12}
+\fetdef\flatflat{13}
+\fetdef\sharpsharp{14}
+
+% dots
+\fetdef\dot{15}
+\fetdef\repeatcolon{16}
+
+% balls
+\fetdef\brevisball{17}
+\fetdef\brevisledger{18}
+\fetdef\longaball{19}
+\fetdef\longaledger{20}
+\fetdef\wholeball{21}
+\fetdef\wholeledger{22}
+\fetdef\halfball{23}
+\fetdef\halfledger{24}
+\fetdef\quartball{25}
+\fetdef\quartledger{26}
+
+% scripts
+\fetdef\ufermata{27}
+\fetdef\dfermata{28}
+\fetdef\sforzatoaccent{29}
+\fetdef\staccato{30}
+\fetdef\ustaccatissimo{31}
+\fetdef\dstaccatissimo{32}
+\fetdef\tenuto{33}
+\fetdef\umarcato{34}
+\fetdef\dmarcato{35}
+\fetdef\ouvert{36}
+\fetdef\plusstop{37}
+\fetdef\upbow{38}
+\fetdef\downbow{39}
+\fetdef\turn{40}
+\fetdef\trill{41}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
+\fetdef\trilelement{47}
+\fetdef\prall{48}
+\fetdef\mordent{49}
+\fetdef\prallprall{50}
+\fetdef\prallmordent{51}
+\fetdef\upprall{52}
+\fetdef\downprall{53}
+
+% flags
+\fetdef\eighthflag{54}
+\fetdef\sixteenthflag{55}
+\fetdef\thirtysecondflag{56}
+\fetdef\sixtyfourthflag{57}
+\fetdef\deighthflag{58}
+\fetdef\dsixteenthflag{59}
+\fetdef\dthirtysecondflag{60}
+\fetdef\dsixtyfourthflag{61}
+
+% clefs
+\fetdef\altoclef{62}
+\fetdef\caltoclef{63}
+\fetdef\bassclef{64}
+\fetdef\cbassclef{65}
+\fetdef\violinclef{66}
+\fetdef\cviolinclef{67}
+
diff --git a/tex/feta16.tex b/tex/feta16.tex
new file mode 100644
index 0000000000..bf27fbc151
--- /dev/null
+++ b/tex/feta16.tex
@@ -0,0 +1,87 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta16.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\quartrest{4}
+\fetdef\eighthrest{5}
+\fetdef\sixteenthrest{6}
+\fetdef\thirtysecondrest{7}
+\fetdef\sixtyfourthrest{8}
+\fetdef\hundredtwentyeighthrest{9}
+
+% accidentals
+\fetdef\sharp{10}
+\fetdef\natural{11}
+\fetdef\flat{12}
+\fetdef\flatflat{13}
+\fetdef\sharpsharp{14}
+
+% dots
+\fetdef\dot{15}
+\fetdef\repeatcolon{16}
+
+% balls
+\fetdef\brevisball{17}
+\fetdef\brevisledger{18}
+\fetdef\longaball{19}
+\fetdef\longaledger{20}
+\fetdef\wholeball{21}
+\fetdef\wholeledger{22}
+\fetdef\halfball{23}
+\fetdef\halfledger{24}
+\fetdef\quartball{25}
+\fetdef\quartledger{26}
+
+% scripts
+\fetdef\ufermata{27}
+\fetdef\dfermata{28}
+\fetdef\sforzatoaccent{29}
+\fetdef\staccato{30}
+\fetdef\ustaccatissimo{31}
+\fetdef\dstaccatissimo{32}
+\fetdef\tenuto{33}
+\fetdef\umarcato{34}
+\fetdef\dmarcato{35}
+\fetdef\ouvert{36}
+\fetdef\plusstop{37}
+\fetdef\upbow{38}
+\fetdef\downbow{39}
+\fetdef\turn{40}
+\fetdef\trill{41}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
+\fetdef\trilelement{47}
+\fetdef\prall{48}
+\fetdef\mordent{49}
+\fetdef\prallprall{50}
+\fetdef\prallmordent{51}
+\fetdef\upprall{52}
+\fetdef\downprall{53}
+
+% flags
+\fetdef\eighthflag{54}
+\fetdef\sixteenthflag{55}
+\fetdef\thirtysecondflag{56}
+\fetdef\sixtyfourthflag{57}
+\fetdef\deighthflag{58}
+\fetdef\dsixteenthflag{59}
+\fetdef\dthirtysecondflag{60}
+\fetdef\dsixtyfourthflag{61}
+
+% clefs
+\fetdef\altoclef{62}
+\fetdef\caltoclef{63}
+\fetdef\bassclef{64}
+\fetdef\cbassclef{65}
+\fetdef\violinclef{66}
+\fetdef\cviolinclef{67}
+
diff --git a/tex/feta19.tex b/tex/feta19.tex
new file mode 100644
index 0000000000..29ccfc60b9
--- /dev/null
+++ b/tex/feta19.tex
@@ -0,0 +1,87 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta19.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\quartrest{4}
+\fetdef\eighthrest{5}
+\fetdef\sixteenthrest{6}
+\fetdef\thirtysecondrest{7}
+\fetdef\sixtyfourthrest{8}
+\fetdef\hundredtwentyeighthrest{9}
+
+% accidentals
+\fetdef\sharp{10}
+\fetdef\natural{11}
+\fetdef\flat{12}
+\fetdef\flatflat{13}
+\fetdef\sharpsharp{14}
+
+% dots
+\fetdef\dot{15}
+\fetdef\repeatcolon{16}
+
+% balls
+\fetdef\brevisball{17}
+\fetdef\brevisledger{18}
+\fetdef\longaball{19}
+\fetdef\longaledger{20}
+\fetdef\wholeball{21}
+\fetdef\wholeledger{22}
+\fetdef\halfball{23}
+\fetdef\halfledger{24}
+\fetdef\quartball{25}
+\fetdef\quartledger{26}
+
+% scripts
+\fetdef\ufermata{27}
+\fetdef\dfermata{28}
+\fetdef\sforzatoaccent{29}
+\fetdef\staccato{30}
+\fetdef\ustaccatissimo{31}
+\fetdef\dstaccatissimo{32}
+\fetdef\tenuto{33}
+\fetdef\umarcato{34}
+\fetdef\dmarcato{35}
+\fetdef\ouvert{36}
+\fetdef\plusstop{37}
+\fetdef\upbow{38}
+\fetdef\downbow{39}
+\fetdef\turn{40}
+\fetdef\trill{41}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
+\fetdef\trilelement{47}
+\fetdef\prall{48}
+\fetdef\mordent{49}
+\fetdef\prallprall{50}
+\fetdef\prallmordent{51}
+\fetdef\upprall{52}
+\fetdef\downprall{53}
+
+% flags
+\fetdef\eighthflag{54}
+\fetdef\sixteenthflag{55}
+\fetdef\thirtysecondflag{56}
+\fetdef\sixtyfourthflag{57}
+\fetdef\deighthflag{58}
+\fetdef\dsixteenthflag{59}
+\fetdef\dthirtysecondflag{60}
+\fetdef\dsixtyfourthflag{61}
+
+% clefs
+\fetdef\altoclef{62}
+\fetdef\caltoclef{63}
+\fetdef\bassclef{64}
+\fetdef\cbassclef{65}
+\fetdef\violinclef{66}
+\fetdef\cviolinclef{67}
+
diff --git a/tex/feta20.tex b/tex/feta20.tex
new file mode 100644
index 0000000000..03aa8086b6
--- /dev/null
+++ b/tex/feta20.tex
@@ -0,0 +1,87 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta20.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\quartrest{4}
+\fetdef\eighthrest{5}
+\fetdef\sixteenthrest{6}
+\fetdef\thirtysecondrest{7}
+\fetdef\sixtyfourthrest{8}
+\fetdef\hundredtwentyeighthrest{9}
+
+% accidentals
+\fetdef\sharp{10}
+\fetdef\natural{11}
+\fetdef\flat{12}
+\fetdef\flatflat{13}
+\fetdef\sharpsharp{14}
+
+% dots
+\fetdef\dot{15}
+\fetdef\repeatcolon{16}
+
+% balls
+\fetdef\brevisball{17}
+\fetdef\brevisledger{18}
+\fetdef\longaball{19}
+\fetdef\longaledger{20}
+\fetdef\wholeball{21}
+\fetdef\wholeledger{22}
+\fetdef\halfball{23}
+\fetdef\halfledger{24}
+\fetdef\quartball{25}
+\fetdef\quartledger{26}
+
+% scripts
+\fetdef\ufermata{27}
+\fetdef\dfermata{28}
+\fetdef\sforzatoaccent{29}
+\fetdef\staccato{30}
+\fetdef\ustaccatissimo{31}
+\fetdef\dstaccatissimo{32}
+\fetdef\tenuto{33}
+\fetdef\umarcato{34}
+\fetdef\dmarcato{35}
+\fetdef\ouvert{36}
+\fetdef\plusstop{37}
+\fetdef\upbow{38}
+\fetdef\downbow{39}
+\fetdef\turn{40}
+\fetdef\trill{41}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
+\fetdef\trilelement{47}
+\fetdef\prall{48}
+\fetdef\mordent{49}
+\fetdef\prallprall{50}
+\fetdef\prallmordent{51}
+\fetdef\upprall{52}
+\fetdef\downprall{53}
+
+% flags
+\fetdef\eighthflag{54}
+\fetdef\sixteenthflag{55}
+\fetdef\thirtysecondflag{56}
+\fetdef\sixtyfourthflag{57}
+\fetdef\deighthflag{58}
+\fetdef\dsixteenthflag{59}
+\fetdef\dthirtysecondflag{60}
+\fetdef\dsixtyfourthflag{61}
+
+% clefs
+\fetdef\altoclef{62}
+\fetdef\caltoclef{63}
+\fetdef\bassclef{64}
+\fetdef\cbassclef{65}
+\fetdef\violinclef{66}
+\fetdef\cviolinclef{67}
+
diff --git a/tex/feta23.tex b/tex/feta23.tex
new file mode 100644
index 0000000000..f4619e014c
--- /dev/null
+++ b/tex/feta23.tex
@@ -0,0 +1,87 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta23.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\quartrest{4}
+\fetdef\eighthrest{5}
+\fetdef\sixteenthrest{6}
+\fetdef\thirtysecondrest{7}
+\fetdef\sixtyfourthrest{8}
+\fetdef\hundredtwentyeighthrest{9}
+
+% accidentals
+\fetdef\sharp{10}
+\fetdef\natural{11}
+\fetdef\flat{12}
+\fetdef\flatflat{13}
+\fetdef\sharpsharp{14}
+
+% dots
+\fetdef\dot{15}
+\fetdef\repeatcolon{16}
+
+% balls
+\fetdef\brevisball{17}
+\fetdef\brevisledger{18}
+\fetdef\longaball{19}
+\fetdef\longaledger{20}
+\fetdef\wholeball{21}
+\fetdef\wholeledger{22}
+\fetdef\halfball{23}
+\fetdef\halfledger{24}
+\fetdef\quartball{25}
+\fetdef\quartledger{26}
+
+% scripts
+\fetdef\ufermata{27}
+\fetdef\dfermata{28}
+\fetdef\sforzatoaccent{29}
+\fetdef\staccato{30}
+\fetdef\ustaccatissimo{31}
+\fetdef\dstaccatissimo{32}
+\fetdef\tenuto{33}
+\fetdef\umarcato{34}
+\fetdef\dmarcato{35}
+\fetdef\ouvert{36}
+\fetdef\plusstop{37}
+\fetdef\upbow{38}
+\fetdef\downbow{39}
+\fetdef\turn{40}
+\fetdef\trill{41}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
+\fetdef\trilelement{47}
+\fetdef\prall{48}
+\fetdef\mordent{49}
+\fetdef\prallprall{50}
+\fetdef\prallmordent{51}
+\fetdef\upprall{52}
+\fetdef\downprall{53}
+
+% flags
+\fetdef\eighthflag{54}
+\fetdef\sixteenthflag{55}
+\fetdef\thirtysecondflag{56}
+\fetdef\sixtyfourthflag{57}
+\fetdef\deighthflag{58}
+\fetdef\dsixteenthflag{59}
+\fetdef\dthirtysecondflag{60}
+\fetdef\dsixtyfourthflag{61}
+
+% clefs
+\fetdef\altoclef{62}
+\fetdef\caltoclef{63}
+\fetdef\bassclef{64}
+\fetdef\cbassclef{65}
+\fetdef\violinclef{66}
+\fetdef\cviolinclef{67}
+
diff --git a/tex/feta26.tex b/tex/feta26.tex
new file mode 100644
index 0000000000..76079b033f
--- /dev/null
+++ b/tex/feta26.tex
@@ -0,0 +1,87 @@
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from feta26.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\quartrest{4}
+\fetdef\eighthrest{5}
+\fetdef\sixteenthrest{6}
+\fetdef\thirtysecondrest{7}
+\fetdef\sixtyfourthrest{8}
+\fetdef\hundredtwentyeighthrest{9}
+
+% accidentals
+\fetdef\sharp{10}
+\fetdef\natural{11}
+\fetdef\flat{12}
+\fetdef\flatflat{13}
+\fetdef\sharpsharp{14}
+
+% dots
+\fetdef\dot{15}
+\fetdef\repeatcolon{16}
+
+% balls
+\fetdef\brevisball{17}
+\fetdef\brevisledger{18}
+\fetdef\longaball{19}
+\fetdef\longaledger{20}
+\fetdef\wholeball{21}
+\fetdef\wholeledger{22}
+\fetdef\halfball{23}
+\fetdef\halfledger{24}
+\fetdef\quartball{25}
+\fetdef\quartledger{26}
+
+% scripts
+\fetdef\ufermata{27}
+\fetdef\dfermata{28}
+\fetdef\sforzatoaccent{29}
+\fetdef\staccato{30}
+\fetdef\ustaccatissimo{31}
+\fetdef\dstaccatissimo{32}
+\fetdef\tenuto{33}
+\fetdef\umarcato{34}
+\fetdef\dmarcato{35}
+\fetdef\ouvert{36}
+\fetdef\plusstop{37}
+\fetdef\upbow{38}
+\fetdef\downbow{39}
+\fetdef\turn{40}
+\fetdef\trill{41}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
+\fetdef\trilelement{47}
+\fetdef\prall{48}
+\fetdef\mordent{49}
+\fetdef\prallprall{50}
+\fetdef\prallmordent{51}
+\fetdef\upprall{52}
+\fetdef\downprall{53}
+
+% flags
+\fetdef\eighthflag{54}
+\fetdef\sixteenthflag{55}
+\fetdef\thirtysecondflag{56}
+\fetdef\sixtyfourthflag{57}
+\fetdef\deighthflag{58}
+\fetdef\dsixteenthflag{59}
+\fetdef\dthirtysecondflag{60}
+\fetdef\dsixtyfourthflag{61}
+
+% clefs
+\fetdef\altoclef{62}
+\fetdef\caltoclef{63}
+\fetdef\bassclef{64}
+\fetdef\cbassclef{65}
+\fetdef\violinclef{66}
+\fetdef\cviolinclef{67}
+