diff --git a/pred-trie.cabal b/pred-trie.cabal
--- a/pred-trie.cabal
+++ b/pred-trie.cabal
@@ -1,5 +1,5 @@
 Name:                   pred-trie
-Version:                0.0.3
+Version:                0.0.4
 Author:                 Athan Clark <athan.clark@gmail.com>
 Maintainer:             Athan Clark <athan.clark@gmail.com>
 License:                BSD3
diff --git a/src/Data/Trie/Pred/Disjoint.hs b/src/Data/Trie/Pred/Disjoint.hs
--- a/src/Data/Trie/Pred/Disjoint.hs
+++ b/src/Data/Trie/Pred/Disjoint.hs
@@ -3,8 +3,10 @@
 import Data.Trie.Pred.Disjoint.Tail
 import qualified Data.Trie.Pred.Disjoint.Tail as ND
 import Data.Monoid
+import qualified Data.List.NonEmpty as NE
 
 
+-- | A Rooted, predicate, disjointly indexed trie
 data RPDTrie p t x = Rooted (Maybe x) [NDPTrie p t x]
 
 instance (Eq p, Eq t) => Monoid (RPDTrie p t x) where
@@ -19,3 +21,12 @@
     go a [] = [a]
     go a (b:bs) | ND.areDisjoint a b =          a : b : bs
                 | otherwise          = (ND.merge a b) : bs
+
+lookup :: (Eq t) => [t] -> RPDTrie p t x -> Maybe x
+lookup [] (Rooted mx _) = mx
+lookup ts (Rooted _ xs) = getFirst $ map (ND.lookup $ NE.fromList ts) xs
+  where
+    getFirst :: [Maybe a] -> Maybe a
+    getFirst [] = Nothing
+    getFirst (Nothing:xs) = getFirst xs
+    getFirst (Just x :xs) = Just x
diff --git a/src/Data/Trie/Pred/Unified.hs b/src/Data/Trie/Pred/Unified.hs
--- a/src/Data/Trie/Pred/Unified.hs
+++ b/src/Data/Trie/Pred/Unified.hs
@@ -3,6 +3,7 @@
 import Data.Trie.Pred.Unified.Tail
 import qualified Data.Trie.Pred.Unified.Tail as NU
 import Data.Monoid
+import qualified Data.List.NonEmpty as NE
 
 
 data RPUTrie t x = Rooted (Maybe x) [NUPTrie t x]
@@ -19,3 +20,12 @@
     go a [] = [a]
     go a (b:bs) | NU.areDisjoint a b =          a : b : bs
                 | otherwise          = (NU.merge a b) : bs
+
+lookup :: (Eq t) => [t] -> RPUTrie t x -> Maybe x
+lookup [] (Rooted mx _) = mx
+lookup ts (Rooted _ xs) = getFirst $ map (NU.lookup $ NE.fromList ts) xs
+  where
+    getFirst :: [Maybe a] -> Maybe a
+    getFirst [] = Nothing
+    getFirst (Nothing:xs) = getFirst xs
+    getFirst (Just x :xs) = Just x
