diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -1,13 +1,4 @@
 
-# BasicWriteMidi.lhs, BasicMidiFile.lhs are stripped versions of
-#   WriteMidi.lhs, MidiFile.lhs
-# ../ghc_add/IOExtensions.hs needs non-existing IOExts
-
-OBJECT_DIR    := build/$(shell uname -s)-$(shell uname -m)
-INTERFACE_DIR := build/Interface
-#BUILD_DIR = `uname -s`-`uname -m`
-
-
 BASICS   = Basic/Pitch.lhs Basic/Duration.lhs Basic/Tempo.lhs Basic/Interval.lhs Basic/Scale.lhs \
 	   Composition/Trill.lhs Composition/Chord.lhs Composition/ChordType.lhs \
 	   Composition/Drum.lhs Composition/Rhythm.lhs \
@@ -42,10 +33,7 @@
               ChartBar ChordChart ChordSymbol EventChart \
               Instrument ScaleChart Style Transposeable)
 
-AUTOTRACK_PROG = $(patsubst %, src/Haskore/Interface/AutoTrack/%.lhs, \
-                   Main Option)
 
-
 EXAMPLES = $(patsubst %, Example/%, \
 	       Miscellaneous.lhs \
 	       Ssf.lhs NewResolutions.lhs \
@@ -77,20 +65,7 @@
 # names of literate modules after removing literary information
 UNLIT_MODULES = $(patsubst %.lhs, %.hs, $(patsubst %.hs, , $(GHC_MODULES)))
 
-# names of all modules without literary information
-HS_MODULES = $(patsubst %.lhs, %.hs, $(GHC_MODULES))
 
-
-STDINTERFACES = base/base haskell-src/haskell-src QuickCheck/QuickCheck
-
-STDPACKAGES = base mtl haskell-src network hosc hsc3 QuickCheck HUnit
-
-GHC_OPTIONS = -Wall -odir$(OBJECT_DIR) -hidir$(INTERFACE_DIR) \
-              -i:$(MODULEPATH):src/Test
-             # -threaded
-             # -hide-package Haskore   # ignore modules compiled and registered by Cabal
-
-
 HUGS_MODULES = $(patsubst %, src/%, $(MEDIA)) \
                $(patsubst %, src/Haskore/%, $(MODULES))
 
@@ -107,7 +82,7 @@
 
 .INTERMEDIATE:	$(UNLIT_MODULES) PlayTmp.hs
 
-.PHONY:	all clean distclean cabal-configure cabal-build compile ghc-all ghci hugs playmidi \
+.PHONY:	all clean distclean cabal-all compile ghci hugs playmidi \
 	pdf autotrack-ps doc \
 	test test-compile test-hugs testcases debug \
 	fluid
@@ -123,37 +98,25 @@
 distclean:	clean
 	-rm -f dist/doc/Tutorial.pdf
 
-test:   test-compile testcases pdf autotrack-ps cabal-haddock
-
-compile:	hugs ghc-all autotrack
-
-test-compile:	test-hugs ghc-all autotrack
+test:   test-compile pdf autotrack-ps testcases
 
-# disable optimization for GHC-6.4 and NewResolutions
-cabal-configure:
-	runhaskell Setup.lhs configure --user --disable-optimization
+compile:	hugs cabal-all
 
-cabal-build:	cabal-configure
-	runhaskell Setup.lhs build
+test-compile:	test-hugs cabal-all
 
-cabal-haddock:	cabal-configure
-	runhaskell Setup.lhs haddock
+cabal-all:
+	runhaskell Setup configure --user --enable-tests -fbuildExamples
+	runhaskell Setup build
+	runhaskell Setup haddock
 
-ghc-all:	$(GHC_DEPENDS)
-	-mkdir $(OBJECT_DIR)
-	ghc --make $(GHC_OPTIONS) $(GHC_DEPENDS)
+testcases:	cabal-all
+	./dist/build/test-haskore/test-haskore +RTS -M32m -c30 -RTS
 
 # start ghci using compiled objects from Cabal's 'dist/build' directory
 ghci:	cabal-build
 	ghci +RTS -M256m -c30 -RTS -Wall \
 	   -odirdist/build -hidirdist/build -i:$(MODULEPATH):src/Test
 
-# start ghci using compiled objects from 'build' directory
-ghci-custom:	cabal-configure $(GHC_DEPENDS) ghci-quick
-
-ghci-quick:
-	ghci +RTS -M256m -c30 -RTS $(GHC_OPTIONS) $(GHC_DEPENDS)
-
 hugs:	$(HUGS_MODULES)
 # this version wouldn't stop on a failure :-(
 #	echo ":quit" | hugs $(HUGS_MODULES)
@@ -167,20 +130,9 @@
 	hugs -98 -h1000000 -P$(MODULEPATH):$(HUGS_PACKAGE_PATH) $(HUGS_MODULES)
 
 test-hugs:	$(HUGS_MODULES) # hugs
-	@echo "***** If in test mode, enter :q in order to continue. *****"
+	@echo "***** Enter :q in order to continue testing. *****"
 	hugs -98 -h1000000 -P$(MODULEPATH):$(HUGS_PACKAGE_PATH) $(HUGS_MODULES)
 
-doc:	$(HS_MODULES)
-	haddock -B /usr/lib/ghc -o docs/html --dump-interface=docs/haskore.haddock -h \
-	    $(HS_MODULES)
-#	    $(patsubst %, --use-package=%, $(STDPACKAGES)) \
-
-olddoc:	$(HS_MODULES)
-	haddock -o docs/html --dump-interface=docs/haskore.haddock -h \
-	    $(patsubst %, -i /usr/local/share/ghc-6.2/html/libraries/%.haddock, $(STDINTERFACES)) \
-	    $(HS_MODULES)
-
-
 %.hs:	%.lhs
 	unlit $< $@
 
@@ -196,20 +148,6 @@
 
 %.pdf:	%.eps
 	epstopdf $<
-
-testcases:	src/Test/Suite.lhs	src/Test/Equivalence.lhs
-	-rm $(OBJECT_DIR)/Main.o
-	ghc --make $(GHC_OPTIONS) -o $(OBJECT_DIR)/test $<
-	$(OBJECT_DIR)/test +RTS -M32m -c30 -RTS
-#	runhugs +N -98 -h2000000 -P:$(MODULEPATH) Test/Suite.lhs
-
-flip:	src/Haskore/Example/FlipTest.hs
-	ghc $(GHC_OPTIONS) -O --make -o $@ $<
-#	$@ | timidity -B8,9 -
-
-autotrack:	$(AUTOTRACK_PROG) $(GHC_DEPENDS)
-	-rm $(OBJECT_DIR)/Main.o
-	ghc $(GHC_OPTIONS) -i:src/Haskore/Interface/AutoTrack/ -O --make -o $@ $<
 
 autotrack-ps:
 	cd src/Haskore/Interface/AutoTrack/ && make doc
diff --git a/haskore.cabal b/haskore.cabal
--- a/haskore.cabal
+++ b/haskore.cabal
@@ -1,5 +1,5 @@
 Name:           haskore
-Version:        0.2.0.6
+Version:        0.2.0.7
 License:        GPL
 License-File:   LICENSE
 Author:         Paul Hudak <paul.hudak@yale.edu>, Henning Thielemann
@@ -39,7 +39,7 @@
 Source-Repository this
   type:     darcs
   location: http://code.haskell.org/haskore/revised/core
-  tag:      0.2.0.6
+  tag:      0.2.0.7
 
 Flag splitBase
   description: Choose the new smaller, split-up base package.
@@ -187,12 +187,27 @@
   Main-Is: Suite.lhs
   Other-Modules:
     Equivalence
+  GHC-Options: -Wall -rtsopts
 
+Executable haskore-flip
+  Default-Language: Haskell2010
+  Main-Is: src/Haskore/Example/FlipTest.hs
+  GHC-Options: -Wall
+  If flag(buildExamples)
+    Build-Depends:
+      haskore,
+      midi,
+      bytestring,
+      base
+  Else
+    Buildable: False
+
 Executable autotrack
   Default-Language: Haskell2010
   Hs-Source-Dirs: src/Haskore/Interface/AutoTrack
   Main-Is: Main.lhs
   Other-Modules: Option
+  GHC-Options: -Wall
   If flag(buildExamples)
     Build-Depends:
       haskore,
diff --git a/src/Haskore/Example/FlipTest.hs b/src/Haskore/Example/FlipTest.hs
new file mode 100644
--- /dev/null
+++ b/src/Haskore/Example/FlipTest.hs
@@ -0,0 +1,12 @@
+module Main where
+
+import qualified Haskore.Example.Flip as Flip
+import qualified Haskore.Interface.MIDI.Render as RenderMidi
+import qualified Haskore.Music.GeneralMIDI as MidiMusic
+import qualified Sound.MIDI.File.Save as SaveMidi
+import qualified Data.ByteString.Lazy as B
+
+main :: IO ()
+main =
+   B.putStr $ SaveMidi.toByteString $ RenderMidi.mixedMidi $
+   MidiMusic.fromMelodyNullAttr MidiMusic.AcousticGrandPiano Flip.song
