diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -12,7 +12,7 @@
 	pkill jackd
 
 supercollider:
-	(export SC_JACK_DEFAULT_OUTPUTS=alsa_pcm:playback_1,alsa_pcm:playback_2; \
+	(export SC_JACK_DEFAULT_OUTPUTS=system; \
 	 scsynth -u 57110 -D 0)
 
 supercollider-stop:
diff --git a/haskore-supercollider.cabal b/haskore-supercollider.cabal
--- a/haskore-supercollider.cabal
+++ b/haskore-supercollider.cabal
@@ -1,8 +1,9 @@
 Name:           haskore-supercollider
-Version:        0.2
+Version:        0.3
 License:        GPL
 License-File:   LICENSE
 Author:         Henning Thielemann <haskell@henning-thielemann.de>
+Maintainer:     Henning Thielemann <haskell@henning-thielemann.de>
 Homepage:       http://www.haskell.org/haskellwiki/SuperCollider
 Category:       Sound, Music
 Synopsis:       Haskore back-end for SuperCollider
@@ -12,7 +13,7 @@
   The functions manage NodeIds and SuperCollider buffers for you.
   We support realtime replay and rendering to disk.
 Stability:      Experimental
-Tested-With:    GHC==6.4.1, GHC==6.8.2
+Tested-With:    GHC==7.8.3
 Cabal-Version:  >=1.6
 Build-Type:     Simple
 Extra-Source-Files:
@@ -26,7 +27,7 @@
 Source-Repository this
   type:     darcs
   location: http://code.haskell.org/haskore/revised/supercollider/
-  tag:      0.2
+  tag:      0.3
 
 Flag splitBase
   description: Choose the new smaller, split-up base package.
@@ -40,10 +41,10 @@
     haskore-realtime >= 0.2 && < 0.3,
     haskore >=0.1 && <0.3,
     -- for SuperCollider support
-    hosc >=0.13 && <0.14,
-    hsc3 >=0.13 && <0.14,
-    opensoundcontrol-ht >=0.2 && <0.3,
-    supercollider-ht >=0.2 && <0.3,
+    hosc >=0.15 && <0.16,
+    hsc3 >=0.15 && <0.16,
+    opensoundcontrol-ht >=0.3 && <0.4,
+    supercollider-ht >=0.3 && <0.4,
     bytestring >=0.9 && <0.11,
     -- dependency on non-negative for Haddock
     non-negative >=0.0.1 && <0.2,
@@ -55,8 +56,8 @@
 
   If flag(splitBase)
     Build-Depends:
-      process >=1.0 && <1.2,
-      array >=0.1 && <0.5,
+      process >=1.0 && <1.3,
+      array >=0.1 && <0.6,
       containers >=0.1 && <0.6,
       random >=1.0 && <1.1,
       base >=3 && <5
diff --git a/src/Haskore/Interface/SuperCollider/Channel.hs b/src/Haskore/Interface/SuperCollider/Channel.hs
--- a/src/Haskore/Interface/SuperCollider/Channel.hs
+++ b/src/Haskore/Interface/SuperCollider/Channel.hs
@@ -5,7 +5,7 @@
 
 -- import qualified Sound.OpenSoundControl.Transport.Monad as Trans
 
-import qualified Sound.SC3.UGen.IO   as SCIO
+import qualified Sound.SC3.UGen.Bindings.DB as SCIO
 import qualified Sound.SC3.UGen.Rate as SCRate
 import Sound.SC3.UGen.Type (UGen, constant, )
 
diff --git a/src/Haskore/Interface/SuperCollider/Channel/File.hs b/src/Haskore/Interface/SuperCollider/Channel/File.hs
--- a/src/Haskore/Interface/SuperCollider/Channel/File.hs
+++ b/src/Haskore/Interface/SuperCollider/Channel/File.hs
@@ -8,6 +8,8 @@
 import Haskore.Interface.SuperCollider.Channel
           (Channel, NumberChannels)
 
+import System.IO.Error (catchIOError)
+
 -- import System.Directory (removeFile)
 import Data.Char (isDigit)
 
@@ -18,11 +20,11 @@
 
 next :: NumberChannels -> IO Channel
 next inc =
-   do num <- catch
+   do num <- catchIOError
          (do numStr <- readFile fileName
              if all isDigit numStr
                then return (read numStr)
-               else ioError (userError "not a number in  channel file"))
+               else ioError (userError "not a number in channel file"))
          (const $ return ChannelMng.least)
       -- removeFile fileName
       writeFile fileName (show (inc+num))
diff --git a/src/Haskore/Interface/SuperCollider/Example.hs b/src/Haskore/Interface/SuperCollider/Example.hs
--- a/src/Haskore/Interface/SuperCollider/Example.hs
+++ b/src/Haskore/Interface/SuperCollider/Example.hs
@@ -8,11 +8,12 @@
 import qualified Sound.SC3.UGen.Type       as SCType
 import qualified Sound.SC3.UGen.Math       as SCMath
 import qualified Sound.SC3.UGen.Rate       as SCRate
-import qualified Sound.SC3.UGen.Oscillator as SCOsci
-import qualified Sound.SC3.UGen.Filter     as SCFilter
-import qualified Sound.SC3.UGen.Noise.ID   as SCNoise
-import qualified Sound.SC3.UGen.Envelope   as SCEnv
+import qualified Sound.SC3.UGen.Bindings.DB as SCOsci
+import qualified Sound.SC3.UGen.Bindings.DB as SCFilter
+import qualified Sound.SC3.UGen.Bindings.DB as SCNoise
+import qualified Sound.SC3.UGen.Bindings.DB as SCEnv
 import qualified Sound.SC3.UGen.Envelope.Construct as SCEnvCons
+import Sound.SC3.UGen.Envelope (Envelope(Envelope))
 import Sound.SC3.UGen.Enum
            (DoneAction(DoNothing, PauseSynth),
             Envelope_Curve(EnvLin, EnvSin))
@@ -338,11 +339,11 @@
         tone1   = SCOsci.saw SCRate.AR (freq * SCType.mce [0.995, 1.002])
     in  filtered
 
-bridge :: UGen -> UGen -> UGen -> SCEnv.Envelope UGen
+bridge :: UGen -> UGen -> UGen -> Envelope UGen
 bridge fadeDur sustainDur lvl =
    let segTypes = [EnvSin, EnvLin, EnvSin]
        clippedFadeDur = min fadeDur sustainDur
-   in  SCEnv.Envelope
+   in  Envelope
           [0, lvl, lvl, 0]
           [clippedFadeDur, max 0 (sustainDur-fadeDur), clippedFadeDur]
           segTypes (Just (-1)) (Just (-1))
diff --git a/src/Haskore/Interface/SuperCollider/Example/Air.hs b/src/Haskore/Interface/SuperCollider/Example/Air.hs
--- a/src/Haskore/Interface/SuperCollider/Example/Air.hs
+++ b/src/Haskore/Interface/SuperCollider/Example/Air.hs
@@ -5,9 +5,9 @@
 module Haskore.Interface.SuperCollider.Example.Air where
 
 -- import qualified Sound.SC3 as SC
-import qualified Sound.SC3.UGen.Oscillator as SCOsci
-import qualified Sound.SC3.UGen.Filter     as SCFilt
-import qualified Sound.SC3.UGen.Envelope   as SCUGEnv
+import qualified Sound.SC3.UGen.Bindings.DB as SCOsci
+import qualified Sound.SC3.UGen.Bindings.DB as SCFilt
+import qualified Sound.SC3.UGen.Bindings.DB as SCUGEnv
 import qualified Sound.SC3.UGen.Math       as SCMath
 
 import Sound.SC3.UGen.Enum (DoneAction(PauseSynth))
diff --git a/src/Haskore/Interface/SuperCollider/Example/Morph.hs b/src/Haskore/Interface/SuperCollider/Example/Morph.hs
--- a/src/Haskore/Interface/SuperCollider/Example/Morph.hs
+++ b/src/Haskore/Interface/SuperCollider/Example/Morph.hs
@@ -6,10 +6,10 @@
 module Haskore.Interface.SuperCollider.Example.Morph where
 
 -- import qualified Sound.SC3 as SC
-import qualified Sound.SC3.UGen.Oscillator as SCOsci
-import qualified Sound.SC3.UGen.Filter     as SCFilt
+import qualified Sound.SC3.UGen.Bindings.DB as SCOsci
+import qualified Sound.SC3.UGen.Bindings.DB as SCFilt
 -- import qualified Sound.SC3.UGen.Math       as SCMath
-import qualified Sound.SC3.UGen.Envelope   as SCEnv
+import qualified Sound.SC3.UGen.Bindings.DB as SCEnv
 import qualified Sound.SC3.UGen.Envelope.Construct as SCEnvCons
 
 import Sound.SC3.UGen.Enum (DoneAction(PauseSynth), {- EnvCurve(EnvSin,EnvExp) -} )
diff --git a/src/Haskore/Interface/SuperCollider/Play.hs b/src/Haskore/Interface/SuperCollider/Play.hs
--- a/src/Haskore/Interface/SuperCollider/Play.hs
+++ b/src/Haskore/Interface/SuperCollider/Play.hs
@@ -26,8 +26,8 @@
 -- import Sound.SC3.UGen.UGen (UGen)
 
 import Sound.OSC.Transport.Monad (Transport, waitReply, )
-import qualified Sound.OpenSoundControl.Type as OSC
-import qualified Sound.OpenSoundControl.Time as OSCTime
+import qualified Sound.OSC.Type as OSC
+import qualified Sound.OSC.Time as OSCTime
 
 
 import qualified Haskore.Melody            as Melody
diff --git a/src/Haskore/Interface/SuperCollider/Play/Channel.hs b/src/Haskore/Interface/SuperCollider/Play/Channel.hs
--- a/src/Haskore/Interface/SuperCollider/Play/Channel.hs
+++ b/src/Haskore/Interface/SuperCollider/Play/Channel.hs
@@ -7,19 +7,20 @@
    {-# DEPRECATED "use Haskore.Interface.SuperCollider.Schedule.Channel instead" #-}
    where
 
-import qualified Sound.SC3.UGen.Oscillator as SCOsci
-import qualified Sound.SC3.UGen.Filter     as SCFilt
+import qualified Sound.SC3.UGen.Bindings.DB as SCOsci
+import qualified Sound.SC3.UGen.Bindings.DB as SCFilt
 
 import Sound.SC3.UGen.Rate (Rate(KR))
 
 import qualified Sound.SC3.Server.PlayEasy  as SCPlay
 import qualified Sound.SC3.Server.Command   as SCCmd
+import Sound.SC3.Server.Enum (AddAction(AddToTail))
 
 import Sound.SC3.UGen.Type (UGen)
 
 import Sound.OSC.Transport.FD (Transport)
 import Sound.OSC.Transport.FD.UDP  (UDP)
-import qualified Sound.OpenSoundControl.Transport.File as File
+import qualified Sound.OSC.Transport.File as File
 
 import qualified Haskore.Interface.SuperCollider.Channel.State as ChannelState
 import qualified Haskore.Interface.SuperCollider.Channel as Channel
@@ -124,7 +125,7 @@
              (Schedule.fromPerformance
                 [Schedule.installUGenMsg effectsName
                     Schedule.defaultChannel effect]
-                [SCCmd.s_new effectsName sid SCCmd.AddToTail SCPlay.homeId []]
+                [SCCmd.s_new effectsName sid AddToTail SCPlay.homeId []]
                 pf) >>
           return ()
 
diff --git a/src/Haskore/Interface/SuperCollider/Play/Live.hs b/src/Haskore/Interface/SuperCollider/Play/Live.hs
--- a/src/Haskore/Interface/SuperCollider/Play/Live.hs
+++ b/src/Haskore/Interface/SuperCollider/Play/Live.hs
@@ -15,12 +15,12 @@
 module Haskore.Interface.SuperCollider.Play.Live where
 
 import qualified Sound.SC3 as SC
-import qualified Sound.SC3.UGen.IO   as SCIO
 import qualified Sound.SC3.UGen.UGen as SCUGen
-import qualified Sound.SC3.UGen.Oscillator as SCOsci
-import qualified Sound.SC3.UGen.Filter     as SCFilt
+import qualified Sound.SC3.UGen.Bindings.DB as SCIO
+import qualified Sound.SC3.UGen.Bindings.DB as SCOsci
+import qualified Sound.SC3.UGen.Bindings.DB as SCFilt
+import qualified Sound.SC3.UGen.Bindings.DB as SCNoise
 import qualified Sound.SC3.UGen.Envelope   as SCUGEnv
-import qualified Sound.SC3.UGen.Noise.ID   as SCNoise
 import qualified Sound.SC3.UGen.UId as SCUId
 
 import Sound.SC3.UGen.Enum (DoneAction(DoNothing, PauseSynth))
@@ -28,6 +28,7 @@
 
 import qualified Sound.SC3.Server.PlayEasy  as SCPlay
 import qualified Sound.SC3.Server.Command   as SCCmd
+import Sound.SC3.Server.Enum (AddAction(AddToTail, AddToHead))
 
 import Sound.SC3.UGen.Type (UGen, constant, )
 
@@ -234,7 +235,7 @@
              (Schedule.fromPerformance
                 [Schedule.installUGenMsg effectsName
                     Schedule.defaultChannel effect]
-                [SCCmd.s_new effectsName sid SCCmd.AddToTail SCPlay.homeId []]
+                [SCCmd.s_new effectsName sid AddToTail SCPlay.homeId []]
                 pf) >>
           return ()
 
@@ -254,7 +255,7 @@
       (return ())
       (\pitch ->
           do SCPlay.withSC3 $
-                Play.playAtom SCPlay.noId name $
+                Play.playAtom SCPlay.autoId name $
                    ("pitch", Pitch.intToFreq pitch) :
                    ("velocity", 1) : []
              print (Pitch.fromInt pitch))
diff --git a/src/Haskore/Interface/SuperCollider/Render.hs b/src/Haskore/Interface/SuperCollider/Render.hs
--- a/src/Haskore/Interface/SuperCollider/Render.hs
+++ b/src/Haskore/Interface/SuperCollider/Render.hs
@@ -17,8 +17,8 @@
 -- import Sound.OpenSoundControl.Transport (Transport)
 -- import qualified Sound.OpenSoundControl.Transport.Monad as Trans
 
-import qualified Sound.OpenSoundControl.Type as OSC
-import qualified Sound.OpenSoundControl.Time as OSCTime
+import qualified Sound.OSC.Type as OSC
+import qualified Sound.OSC.Time as OSCTime
 
 import qualified Data.ByteString.Lazy as B
 
@@ -31,7 +31,7 @@
 
 import qualified Numeric.NonNegative.Wrapper as NonNeg
 
-import System.Cmd (rawSystem)
+import System.Process (rawSystem)
 import System.Exit (ExitCode)
 
 import Data.Array(Array, Ix, (!), listArray)
diff --git a/src/Haskore/Interface/SuperCollider/Schedule.hs b/src/Haskore/Interface/SuperCollider/Schedule.hs
--- a/src/Haskore/Interface/SuperCollider/Schedule.hs
+++ b/src/Haskore/Interface/SuperCollider/Schedule.hs
@@ -19,10 +19,11 @@
 
 import qualified Sound.SC3.Server.Command   as SCCmd
 import qualified Sound.SC3.Server.PlayEasy  as SCPlay
+import Sound.SC3.Server.Enum (AddAction(AddToTail, AddToHead))
 
 import Sound.SC3.UGen.Type (UGen)
 
-import qualified Sound.OpenSoundControl.Type as OSC
+import qualified Sound.OSC.Type as OSC
 
 import qualified Haskore.Interface.SuperCollider.Note          as Note
 import qualified Haskore.Interface.SuperCollider.Performance   as SCPf
@@ -107,7 +108,7 @@
           (installUGenMsg effectsName effectChannel
               (globalEffect (Channel.readUGen numChan instrumentChannel)) :
            installSoundsMsg instrumentChannel soundAssigns)
-          [SCCmd.s_new effectsName sid SCCmd.AddToTail SCPlay.homeId []]
+          [SCCmd.s_new effectsName sid AddToTail SCPlay.homeId []]
           pf
 
 fromRhythmicMusicSoundEffects ::
@@ -138,7 +139,7 @@
    in  fromPerformance
           (installUGenMsg effectsName effectChannel globalEffect :
            installChannelSoundsMsg soundChannelAssigns)
-          [SCCmd.s_new effectsName sid SCCmd.AddToTail SCPlay.homeId []]
+          [SCCmd.s_new effectsName sid AddToTail SCPlay.homeId []]
           pf
 
 -- slightly inconsistent naming with respect to Music.fromMelodyNullAttr
@@ -236,7 +237,7 @@
 resetMsgs :: [OSC.Message]
 resetMsgs =
    [SCCmd.g_freeAll [SCPlay.rootId],
-    SCCmd.g_new [(SCPlay.homeId, SCCmd.AddToTail, SCPlay.rootId)]]
+    SCCmd.g_new [(SCPlay.homeId, AddToTail, SCPlay.rootId)]]
 
 
 atomPlayMsg ::
@@ -245,7 +246,7 @@
    [(String, Double)] ->
    OSC.Message
 atomPlayMsg sid name =
-   SCCmd.s_new name sid SCCmd.AddToHead SCPlay.homeId
+   SCCmd.s_new name sid AddToHead SCPlay.homeId
    -- adding to head is necessary for allowing global effects like in the Live module
 
 
diff --git a/src/Haskore/Interface/SuperCollider/Schedule/Channel.hs b/src/Haskore/Interface/SuperCollider/Schedule/Channel.hs
--- a/src/Haskore/Interface/SuperCollider/Schedule/Channel.hs
+++ b/src/Haskore/Interface/SuperCollider/Schedule/Channel.hs
@@ -5,17 +5,18 @@
 -}
 module Haskore.Interface.SuperCollider.Schedule.Channel where
 
-import qualified Sound.SC3.UGen.Oscillator as SCOsci
-import qualified Sound.SC3.UGen.Filter     as SCFilt
+import qualified Sound.SC3.UGen.Bindings.DB as SCOsci
+import qualified Sound.SC3.UGen.Bindings.DB as SCFilt
 
 import Sound.SC3.UGen.Rate (Rate(KR))
 
 import qualified Sound.SC3.Server.PlayEasy  as SCPlay
 import qualified Sound.SC3.Server.Command   as SCCmd
+import Sound.SC3.Server.Enum (AddAction(AddToTail))
 
 import Sound.SC3.UGen.Type (UGen)
 
-import qualified Sound.OpenSoundControl.Type as OSC
+import qualified Sound.OSC.Type as OSC
 
 import qualified Haskore.Interface.SuperCollider.Channel as Channel
 import Haskore.Interface.SuperCollider.Channel (Channel, NumberChannels)
@@ -44,7 +45,8 @@
 import Control.Monad.Trans.State  (StateT, runStateT, get, put, )
 import Control.Monad.Trans.Writer (Writer, tell, runWriter, )
 import Control.Monad.Trans.Class (lift, )
-import Control.Monad (liftM2, )
+import Control.Monad (liftM2, liftM, ap, )
+import Control.Applicative (Applicative, pure, (<*>), )
 
 
 
@@ -55,6 +57,13 @@
    Environment {unwrapEnvironment ::
       StateT (Channel, NumberChannels) (Writer [OSC.Message]) a}
 
+instance Functor Environment where
+   fmap = liftM
+
+instance Applicative Environment where
+   (<*>) = ap
+   pure = return
+
 instance Monad Environment where
    x >>= y  = Environment $ unwrapEnvironment . y =<< unwrapEnvironment x
    return   = Environment . return
@@ -190,7 +199,7 @@
        Schedule.fromPerformance
           (Schedule.installUGenMsg effectsName Schedule.defaultChannel effect :
            installSounds)
-          [SCCmd.s_new effectsName sid SCCmd.AddToTail SCPlay.homeId []]
+          [SCCmd.s_new effectsName sid AddToTail SCPlay.homeId []]
           pf
 
 
diff --git a/src/Haskore/Interface/SuperCollider/Schedule/Install.hs b/src/Haskore/Interface/SuperCollider/Schedule/Install.hs
--- a/src/Haskore/Interface/SuperCollider/Schedule/Install.hs
+++ b/src/Haskore/Interface/SuperCollider/Schedule/Install.hs
@@ -8,7 +8,7 @@
 
 import Sound.SC3.UGen.Type (UGen)
 
-import qualified Sound.OpenSoundControl.Type as OSC
+import qualified Sound.OSC.Type as OSC
 
 import qualified Haskore.Interface.SuperCollider.Example       as Example
 import qualified Haskore.Interface.SuperCollider.Play          as Play
@@ -29,6 +29,8 @@
 
 
 import Control.Monad.Trans.Writer (Writer, tell, runWriter)
+import Control.Monad (liftM, ap, )
+import Control.Applicative (Applicative, pure, (<*>), )
 
 
 
@@ -39,6 +41,13 @@
 -}
 newtype Environment a =
    Environment {unwrapEnvironment :: Writer [OSC.Message] a}
+
+instance Functor Environment where
+   fmap = liftM
+
+instance Applicative Environment where
+   (<*>) = ap
+   pure = return
 
 instance Monad Environment where
    x >>= y  = Environment $ unwrapEnvironment . y =<< unwrapEnvironment x
