diff --git a/Data/Ini/List.hs b/Data/Ini/List.hs
--- a/Data/Ini/List.hs
+++ b/Data/Ini/List.hs
@@ -125,10 +125,10 @@
 class Value a where
     -- | @'getValue' 'Section' 'OptionName'@ gets the value for the
     -- named 'Option' from the 'Section'. 
-    getValue :: Section -> OptionName -> Maybe a
+    getValue :: OptionName -> Section -> Maybe a
                 
     -- The default is to just convert the current string.
-    getValue s o = value <$> getOption s o
+    getValue o s = value <$> getOption o s
 
     -- | 'value' converts a single 'Option' 'String' into a value of
     -- the type of the instance.
@@ -144,7 +144,7 @@
             value' v' = error $ "couldn't parse '" ++ v' ++ "' as Bool"
 
 instance Value t => Value [t] where
-    getValue s o = Just . map value $ getOptions s o 
+    getValue o s = Just . map value $ getOptions o s 
     value o = [value o]
 
 instance Read t => Value t where
@@ -221,26 +221,12 @@
 -- and 'OptionName'.  'Nothing' as the 'SectionName' gets 'Option' values
 -- from the default 'Section'.
 get :: Value a => Config -> Maybe SectionName -> OptionName -> Maybe a
-get c s o = get' s >>= (flip getValue) o where
+get c s o = get' s >>= getValue o where
     get' (Just n) = getSection c n
     get' Nothing  = Just $ getDefault c
 
 
 -- And finally, the things to update a Config
-
--- So it turns out both types of updaters are also Monoids. Who knew?
-emptyUpdate :: SectionName -> OptionName -> Option -> Maybe a
-emptyUpdate _ _ _ = Nothing
-
-mappendUpdate :: (SectionName -> OptionName -> Option -> Maybe a)
-              -> (SectionName -> OptionName -> Option -> Maybe a)
-              -> (SectionName -> OptionName -> Option -> Maybe a)
-(a `mappendUpdate` b) s o v  =  maybe (b s o v) Just $ a s o v
-
-instance Monoid (SectionName -> OptionName -> Option -> Maybe a) where
-    mempty = emptyUpdate
-    mappend = mappendUpdate
-
 -- | 'updateOptions' uses an 'UpdateOption' to update all the options
 -- in the 'Config'.
 updateOptions :: UpdateOption -> Config -> Config
@@ -288,11 +274,11 @@
 
 -- Internal routines for getting options. Users should use
 -- getValue
-getOptions :: Section -> OptionName -> [Option]
-getOptions os k =  map snd . filter (\(n, _) -> n == k) $ AL.toList os
+getOptions :: OptionName -> Section -> [Option]
+getOptions k os =  map snd . filter (\(n, _) -> n == k) $ AL.toList os
 
-getOption :: Section -> OptionName -> Maybe Option
-getOption os n = AL.lookupFirst n os
+getOption :: OptionName -> Section -> Maybe Option
+getOption os n = AL.lookupFirst os n
 
 
 -- And output things
diff --git a/UnitTest.hs b/UnitTest.hs
--- a/UnitTest.hs
+++ b/UnitTest.hs
@@ -211,6 +211,10 @@
         testCase "SectionsBy" $
             ["Section 2"] @=? map fst (getSectionsBy test $ elem ' ')
         ],
+    testGroup "value" [
+       testCase "Nothing" $ (Nothing :: Maybe Int) @=? getValue "NoValue" def,
+       testCase "String" $ (Just "12" :: Maybe String) @=? getValue "Value1" def
+       ],
     testGroup "get" [
         testCase "Nothing" $ (Nothing :: Maybe Int) @=? get test Nothing "NoValue",
         testCase "String"
diff --git a/inilist.cabal b/inilist.cabal
--- a/inilist.cabal
+++ b/inilist.cabal
@@ -1,5 +1,5 @@
 name:                inilist
-version:             0.1.0.0
+version:             0.2.0.0
 synopsis:            Processing for .ini files with duplicate sections and options
 description:         Please see README.md
 homepage:            https://chiselapp.com/user/mwm/repository/inilist
@@ -33,4 +33,9 @@
 
 source-repository head
   type:     fossil
-  location: 
+  location: https://chiselapp.com/user/mwm/repository/inilist/
+
+source-repository this
+  type:     fossil
+  location: https://chiselapp.com/user/mwm/repository/inilist/
+  tag:	    0.2.0.0
