diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -42,3 +42,6 @@
 
 0.1.2.3:
 		changes to reflect new hmatrix interface		
+
+0.1.2.4:
+		changes ro reflect new hmatrix interface
diff --git a/hsignal.cabal b/hsignal.cabal
--- a/hsignal.cabal
+++ b/hsignal.cabal
@@ -1,12 +1,12 @@
 Name:               hsignal
-Version:            0.1.2.3
+Version:            0.1.2.4
 License:            BSD3
 License-file:       LICENSE
 Author:             Vivian McPhail
 Maintainer:         haskell.vivian.mcphail <at> gmail <dot> com
 Stability:          provisional
 Homepage:           http://code.haskell.org/hsignal
-Synopsis:           Signal processing
+Synopsis:           Signal processing and EEG data analysis
 Description:        
      Purely functional interface to signal processing based on hmatrix
      .                       
@@ -44,6 +44,7 @@
                         Numeric.Signal.EEG
     other-modules:      Numeric.Signal.Internal
                         Numeric.Signal.EEG.BDF
+
     C-sources:          lib/Numeric/Signal/signal-aux.c
 
     ghc-prof-options:   -auto
@@ -66,5 +67,5 @@
 
     source-repository head
         type:     darcs
-        location: http://code.haskell.org/hsignal
+        location: darcs get http://code.haskell.org/hsignal
 
diff --git a/lib/Numeric/Signal.hs b/lib/Numeric/Signal.hs
--- a/lib/Numeric/Signal.hs
+++ b/lib/Numeric/Signal.hs
@@ -40,14 +40,10 @@
 
 import qualified Data.List as L
 
-import Data.Packed.Vector
-import Data.Packed(Container(..))
-
+--import Data.Packed.Vector
+--import Data.Packed(Container(..))
+import Numeric.Vector
 import Numeric.GSL.Vector
-
---import Numeric.LinearAlgebra.Algorithms
-import Numeric.LinearAlgebra.Linear
---import Numeric.LinearAlgebra.Interface
 
 import qualified Numeric.GSL.Fourier as F
 
diff --git a/lib/Numeric/Signal/Internal.hs b/lib/Numeric/Signal/Internal.hs
--- a/lib/Numeric/Signal/Internal.hs
+++ b/lib/Numeric/Signal/Internal.hs
@@ -27,15 +27,16 @@
                 ) where
 
 import Data.Packed.Development(createVector,vec,app1,app2,app3,app4)
-import Data.Packed.Vector
-import Data.Packed(Container(..))
+--import Data.Packed.Vector
+import Numeric.Container
+import Numeric.Vector
 
 --import Numeric.LinearAlgebra.Algorithms
-import Numeric.LinearAlgebra.Linear
+--import Numeric.LinearAlgebra.Linear
 
 import qualified Numeric.GSL.Fourier as F
 import Foreign
-import Data.Complex
+--import Data.Complex
 import Foreign.C.Types
 
 import Prelude hiding(filter)
@@ -54,7 +55,7 @@
 -----------------------------------------------------------------------------
 
 instance Convolvable (Vector Double) where
-    convolve x y = fst $ fromComplex $ F.ifft $ (F.fft (comp x) * F.fft (comp y))
+    convolve x y = fst $ fromComplex $ F.ifft $ (F.fft (complex x) * F.fft (complex y))
 --    convolve = convolve_vector_double
 
 convolve_vector_double c a = unsafePerformIO $ do
@@ -96,8 +97,8 @@
 -- | Hilbert transform with original vector as real value, transformed as imaginary
 hilbert :: Vector Double -> Vector (Complex Double)
 hilbert v = unsafePerformIO $ do
-            let r = comp v
-            -- could use (comp v) to make a complex vector in haskell rather than C
+            let r = complex v
+            -- could use (complex v) to make a complex vector in haskell rather than C
             app1 signal_hilbert vec r "hilbert"
             return r
 
@@ -111,7 +112,7 @@
        -> Vector Double  -- ^ power density  
 pwelch w v = unsafePerformIO $ do
              let r = constant 0.0 ((w `div` 2) + 1)
-             app2 (signal_pwelch $ fromIntegral w) vec (comp v) vec r "pwelch"
+             app2 (signal_pwelch $ fromIntegral w) vec (complex v) vec r "pwelch"
              return r
 
 foreign import ccall "signal-aux.h pwelch" signal_pwelch :: CInt -> CInt -> PC -> CInt -> PD -> IO CInt
@@ -138,8 +139,8 @@
       -> Vector Double     -- ^ points (between 0 and 2*pi)
       -> Vector Double     -- ^ response
 freqz b a w = let k = max (dim b) (dim a)
-                  hb = polyEval (postpad b k) (exp (scale (0 :+ 1) ((comp w) :: Vector (Complex Double))))
-                  ha = polyEval (postpad a k) (exp (scale (0 :+ 1) ((comp w) :: Vector (Complex Double))))
+                  hb = polyEval (postpad b k) (exp (scale (0 :+ 1) ((complex w) :: Vector (Complex Double))))
+                  ha = polyEval (postpad a k) (exp (scale (0 :+ 1) ((complex w) :: Vector (Complex Double))))
               in complex_power (hb / ha)
 
 postpad v n = let d = dim v
diff --git a/lib/Numeric/Signal/Multichannel.hs b/lib/Numeric/Signal/Multichannel.hs
--- a/lib/Numeric/Signal/Multichannel.hs
+++ b/lib/Numeric/Signal/Multichannel.hs
@@ -45,17 +45,12 @@
 
 --import qualified Data.List as L
 
-import Data.Packed.Vector
-import Data.Packed.Matrix
---import Data.Packed(Container(..))
-
 import Data.Binary
 
 import Foreign.Storable
---import Numeric.GSL.Vector
 
-import Numeric.LinearAlgebra.Linear
---import Numeric.LinearAlgebra.Algorithms
+import Numeric.Vector
+import Numeric.Matrix
 
 --import qualified Numeric.GSL.Fourier as F
 
@@ -102,7 +97,8 @@
 
 instance (Binary a, Storable a, 
           Ord a, RealFrac a,
-         Vectors Vector a) => Binary (Multichannel a) where
+          Container Vector a,
+         Product a) => Binary (Multichannel a) where
     put (MC s p c l de f d) = do
                               put s
                               put p
@@ -111,7 +107,7 @@
                               put de
                               put f
                               put $! fmap convert d
-        where convert v = let (mi,ma) = (vectorMin v,vectorMax v)
+        where convert v = let (mi,ma) = (minElement v,maxElement v)
                               v' = mapVector (\x -> round $ (x - mi)/(ma - mi) * (fromIntegral (maxBound :: Word32))) v
                           in (mi,ma,(v' :: Vector Word32)) 
 
@@ -132,12 +128,14 @@
 
 readMultichannel :: (Binary a, Storable a, 
                      Ord a, RealFrac a,
-                    Vectors Vector a) => FilePath -> IO (Multichannel a)
+                     Container Vector a,
+                    Product a) => FilePath -> IO (Multichannel a)
 readMultichannel = decodeFile
 
 writeMultichannel :: (Binary a, Storable a, 
                       Ord a, RealFrac a,
-                     Vectors Vector a) => FilePath -> Multichannel a -> IO ()
+                      Container Vector a,
+                     Product a) => FilePath -> Multichannel a -> IO ()
 writeMultichannel = encodeFile
 
 -----------------------------------------------------------------------------
