diff --git a/sample-frame.cabal b/sample-frame.cabal
--- a/sample-frame.cabal
+++ b/sample-frame.cabal
@@ -1,6 +1,7 @@
+Cabal-Version:    2.2
 Name:             sample-frame
-Version:          0.0.3
-License:          BSD3
+Version:          0.0.4
+License:          BSD-3-Clause
 License-File:     LICENSE
 Author:           Henning Thielemann <haskell@henning-thielemann.de>
 Maintainer:       Henning Thielemann <haskell@henning-thielemann.de>
@@ -21,11 +22,10 @@
    .
    This is used by packages @sox@, @alsa@, @synthesizer@.
 Tested-With:       GHC==7.4.2
-Cabal-Version:     >=1.6
 Build-Type:        Simple
 
 Source-Repository this
-  Tag:         0.0.3
+  Tag:         0.0.4
   Type:        darcs
   Location:    http://code.haskell.org/~thielema/sample-frame/core/
 
@@ -55,6 +55,7 @@
   Hs-Source-Dirs: src
 
   GHC-Options: -Wall
+  Default-Language: Haskell98
 
   Exposed-Modules:
     Sound.Frame
@@ -66,13 +67,17 @@
     Build-Depends:
       storablevector >=0.2.4 && <0.3,
       storable-record >=0.0.2 && <0.1,
-      storable-tuple >=0.0.1 && <0.1
+      storable-tuple >=0.0.1 && <0.1,
+      QuickCheck,
+      base
   Else
     Buildable: False
   GHC-Options: -Wall -fexcess-precision -threaded
 -- -ddump-simpl-stats -ddump-asm
   Hs-Source-Dirs: src
+  Default-Language: Haskell98
   Main-Is: SpeedTest.hs
   Other-Modules:
+    Sound.Frame
     Sound.Frame.Stereo.Record
     Sound.Frame.Stereo.Traversable
diff --git a/src/Sound/Frame/Stereo.hs b/src/Sound/Frame/Stereo.hs
--- a/src/Sound/Frame/Stereo.hs
+++ b/src/Sound/Frame/Stereo.hs
@@ -3,6 +3,7 @@
 -}
 module Sound.Frame.Stereo (
    T, left, right, cons, map,
+   swap,
    Channel(..), select,
    interleave, sequence, liftApplicative,
    ) where
@@ -44,6 +45,11 @@
 {-# INLINE map #-}
 map :: (a -> b) -> T a -> T b
 map f (Cons l r) = Cons (f l) (f r)
+
+
+swap :: T a -> T a
+swap x = cons (right x) (left x)
+
 
 
 data Channel = Left | Right
