diff --git a/Naperian.cabal b/Naperian.cabal
--- a/Naperian.cabal
+++ b/Naperian.cabal
@@ -1,62 +1,19 @@
--- Initial Naperian.cabal generated by cabal init.  For further 
--- documentation, see http://haskell.org/cabal/users-guide/
-
--- The name of the package.
 name:                Naperian
-
--- The package version.  See the Haskell package versioning policy (PVP) 
--- for standards guiding when and how versions should be incremented.
--- https://wiki.haskell.org/Package_versioning_policy
--- PVP summary:      +-+------- breaking API changes
---                   | | +----- non-breaking API additions
---                   | | | +--- code changes with no API change
-version:             0.1.0.1
+version:             0.1.1.0
 
--- A short (one-line) description of the package.
 synopsis:            Naperian Functors for APL-like programming
-
--- A longer description of the package.
--- description:         
-
--- URL for the project homepage or repository.
 homepage:            https://github.com/idontgetoutmuch/Naperian
-
--- The license under which the package is released.
 license:             OtherLicense
-
--- The file containing the license text.
 license-file:        LICENSE.txt
-
--- The package author(s).
 author:              Austin Seipp
-
--- An email address to which users can send suggestions, bug reports, and 
--- patches.
 maintainer:          dominic@steinitz.org
-
--- A copyright notice.
--- copyright:           
-
 category:            Math
-
 build-type:          Simple
-
--- Extra files to be distributed with the package, such as examples or a 
--- README.
 extra-source-files:  ChangeLog.md
-
--- Constraint on the version of Cabal needed to build this package.
 cabal-version:       >=1.10
 
-
 library
-  -- Modules exported by the library.
   exposed-modules:     Naperian
-  
-  -- Modules included in this library but not exported.
-  -- other-modules:       
-  
-  -- LANGUAGE extensions used by modules in this package.
   other-extensions:    ConstraintKinds
                      , DataKinds
                      , DeriveGeneric
@@ -76,16 +33,10 @@
                      , TypeFamilies
                      , TypeOperators
                      , UndecidableInstances
-  
-  -- Other library packages from which modules are imported.
-  build-depends:       base >= 4.10 && < 4.11
+  build-depends:     base >=4.12 && <4.13
                      , containers
                      , ghc-prim
                      , vector
-  
-  -- Directories containing source files.
   hs-source-dirs:      src
-  
-  -- Base language which the package is written in.
   default-language:    Haskell2010
-  
+
diff --git a/src/Naperian.hs b/src/Naperian.hs
--- a/src/Naperian.hs
+++ b/src/Naperian.hs
@@ -258,6 +258,9 @@
   pure  = hreplicate
   (<*>) = hzipWith ($)
 
+hlookup :: Hyper (f : fs) a -> Log f -> Hyper fs a
+hlookup (Prism x) i = fmap (flip lookup i) x
+
 hzipWith :: (a -> b -> c) -> Hyper fs a -> Hyper fs b -> Hyper fs c
 hzipWith f (Scalar a) (Scalar b) = Scalar (f a b)
 hzipWith f (Prism x)  (Prism y)  = Prism (hzipWith (azipWith f) x y)
@@ -270,6 +273,10 @@
 transposeH :: Hyper (f : (g : fs)) a
            -> Hyper (g : (f : fs)) a
 transposeH (Prism (Prism x)) = Prism (Prism (fmap transpose x))
+
+transposeH' :: Hyper (f : (g : (h : fs))) a
+            -> Hyper (f : (h : (g : fs))) a
+transposeH' (Prism (Prism (Prism x))) = Prism (Prism (Prism (fmap transpose x)))
 
 -- | Fold over a single dimension of a Hypercuboid.
 foldrH :: (a -> a -> a) -> a -> Hyper (f : fs) a -> Hyper fs a
