diff --git a/Control/Concurrent/CHP/Connect.hs b/Control/Concurrent/CHP/Connect.hs
--- a/Control/Concurrent/CHP/Connect.hs
+++ b/Control/Concurrent/CHP/Connect.hs
@@ -140,16 +140,47 @@
 cycleConnect ps = connect . uncurry . flip . pipelineConnect $ ps
 
 instance Connectable (Chanout a) (Chanin a) where
-  connect = (>>=) ((writer &&& reader) <$> oneToOneChannel)
+  connect = (newChannelWR >>=)
 instance ConnectableExtra (Chanout a) (Chanin a) where
   type ConnectableParam (Chanout a) = ChanOpts a
   connectExtra o = (>>=) ((writer &&& reader) <$> oneToOneChannel' o)
 
 instance Connectable (Chanin a) (Chanout a) where
-  connect = (>>=) ((reader &&& writer) <$> oneToOneChannel)
+  connect = (newChannelRW >>=)
 instance ConnectableExtra (Chanin a) (Chanout a) where
   type ConnectableParam (Chanin a) = ChanOpts a
   connectExtra o = (>>=) ((reader &&& writer) <$> oneToOneChannel' o)
+
+instance Connectable (Shared Chanin a) (Chanout a) where connect = (newChannelRW >>=)
+instance Connectable (Chanin a) (Shared Chanout a) where connect = (newChannelRW >>=)
+instance Connectable (Shared Chanin a) (Shared Chanout a) where connect = (newChannelRW >>=)
+
+instance Connectable (Chanout a) (Shared Chanin a) where connect = (newChannelWR >>=)
+instance Connectable (Shared Chanout a) (Chanin a) where connect = (newChannelWR >>=)
+instance Connectable (Shared Chanout a) (Shared Chanin a) where connect = (newChannelWR >>=)
+
+instance ConnectableExtra (Chanout a) (Shared Chanin a) where
+  type ConnectableParam (Chanout a) = ChanOpts a
+  connectExtra o = (>>=) ((writer &&& reader) <$> oneToAnyChannel' o)
+instance ConnectableExtra (Shared Chanout a) (Chanin a) where
+  type ConnectableParam (Shared Chanout a) = ChanOpts a
+  connectExtra o = (>>=) ((writer &&& reader) <$> anyToOneChannel' o)
+instance ConnectableExtra (Shared Chanout a) (Shared Chanin a) where
+  type ConnectableParam (Shared Chanout a) = ChanOpts a
+  connectExtra o = (>>=) ((writer &&& reader) <$> anyToAnyChannel' o)
+
+instance ConnectableExtra (Shared Chanin a) (Chanout a) where
+  type ConnectableParam (Shared Chanin a) = ChanOpts a
+  connectExtra o = (>>=) ((reader &&& writer) <$> oneToAnyChannel' o)
+instance ConnectableExtra (Chanin a) (Shared Chanout a) where
+  type ConnectableParam (Chanin a) = ChanOpts a
+  connectExtra o = (>>=) ((reader &&& writer) <$> anyToOneChannel' o)
+instance ConnectableExtra (Shared Chanin a) (Shared Chanout a) where
+  type ConnectableParam (Shared Chanin a) = ChanOpts a
+  connectExtra o = (>>=) ((reader &&& writer) <$> anyToAnyChannel' o)
+
+
+
 
 instance Connectable (Enrolled PhasedBarrier ()) (Enrolled PhasedBarrier ()) where
   connect m = do b <- newBarrier
diff --git a/chp-plus.cabal b/chp-plus.cabal
--- a/chp-plus.cabal
+++ b/chp-plus.cabal
@@ -1,5 +1,5 @@
 Name:            chp-plus
-Version:         1.0.1
+Version:         1.1.0
 Synopsis:        A set of high-level concurrency utilities built on Communicating Haskell Processes
 License:         BSD3
 License-file:    LICENSE
@@ -18,7 +18,7 @@
 
 Cabal-Version:   >= 1.2.3
 Build-Type:      Simple
-Build-Depends:   base >= 3 && < 5, chp >= 2.0 && < 2.1, containers, deepseq >= 1.1 && < 1.2, extensible-exceptions >= 0.1.1.0, HUnit, mtl, pretty, QuickCheck >= 2, stm
+Build-Depends:   base >= 3 && < 5, chp >= 2.0 && < 2.2, containers, deepseq >= 1.1 && < 1.2, extensible-exceptions >= 0.1.1.0, HUnit, mtl, pretty, QuickCheck >= 2, stm
 
 Exposed-modules: Control.Concurrent.CHP.Actions
                  Control.Concurrent.CHP.Arrow
