diff --git a/Data/Bool/Higher.hs b/Data/Bool/Higher.hs
new file mode 100644
--- /dev/null
+++ b/Data/Bool/Higher.hs
@@ -0,0 +1,10 @@
+module Data.Bool.Higher ((??),bool) where
+
+import Data.Bool
+
+(??) :: a -> a -> Bool -> a
+(a ?? b) p | p     = a
+           | not p = b
+
+bool :: (a -> b) -> (a -> b) -> (a -> Bool) -> a -> b
+bool true false p v = false v ?? true v $ p v
diff --git a/Data/List/Higher.hs b/Data/List/Higher.hs
new file mode 100644
--- /dev/null
+++ b/Data/List/Higher.hs
@@ -0,0 +1,10 @@
+module Data.List.Higher
+    (module Data.List
+    ,list)
+    where
+
+import Data.List
+import Data.Bool.Higher
+
+list :: b -> ([a] -> b) -> [a] -> b
+list nil cons = bool cons (const nil) null
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
diff --git a/Setup.lhs b/Setup.lhs
new file mode 100644
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,3 @@
+#!/usr/bin/env runhaskell
+> import Distribution.Simple
+> main = defaultMain
diff --git a/higherorder.cabal b/higherorder.cabal
new file mode 100644
--- /dev/null
+++ b/higherorder.cabal
@@ -0,0 +1,16 @@
+name:                higherorder
+version:             0.0
+synopsis:            Some higher order functions for Bool and []
+description:         Some higher order functions
+category:            Composition
+license:             BSD3
+license-file:        LICENSE
+author:              Chris Done <chrisdone@gmail.com>
+maintainer:          chrisdone@gmail.com
+build-Depends:       base
+cabal-Version:       >= 1.2
+build-type:          Simple
+
+library
+  build-depends: base
+  exposed-modules: Data.Bool.Higher,Data.List.Higher
