diff --git a/Data/Bool/Tools.hs b/Data/Bool/Tools.hs
--- a/Data/Bool/Tools.hs
+++ b/Data/Bool/Tools.hs
@@ -3,8 +3,10 @@
   (|||)
 ) where
 
-import Data.Function.Tools (apply2way)
-
-(&&&), (|||) :: (a -> Bool) -> (a -> Bool) -> a -> Bool
-(&&&) = apply2way (&&)
-(|||) = apply2way (||)
+(&&&), (|||) :: Monad m => m Bool -> m Bool -> m Bool
+p1 &&& p2 = do b1 <- p1
+               b2 <- p2
+	       return $ b1 && b2
+p1 ||| p2 = do b1 <- p1
+               b2 <- p2
+	       return $ b1 || b2
diff --git a/Data/List/Tools.hs b/Data/List/Tools.hs
--- a/Data/List/Tools.hs
+++ b/Data/List/Tools.hs
@@ -1,7 +1,20 @@
 module Data.List.Tools (
-  mulLists
+  takeUntil
+, dropUntil
+, mulLists
 , defaultElem
 ) where
+
+takeUntil :: (a -> Bool) -> [a] -> [a]
+dropUntil :: (a -> Bool) -> [a] -> [a]
+takeUntil _ []     = []
+takeUntil p (x:xs)
+  | p x            = [x]
+  | otherwise      = x : takeUntil p xs
+dropUntil _ []     = []
+dropUntil p (x:xs)
+  | p x            = xs
+  | otherwise      = dropUntil p xs
 
 mulLists :: [[a]] -> [[a]]
 mulLists []       = [[]]
diff --git a/yjtools.cabal b/yjtools.cabal
--- a/yjtools.cabal
+++ b/yjtools.cabal
@@ -1,5 +1,5 @@
 Name:		yjtools
-Version:	0.9
+Version:	0.9.5
 Cabal-Version:	>= 1.2
 Build-Type:	Simple
 License:	LGPL
