diff --git a/Data/Factual/Query/FacetsQuery.hs b/Data/Factual/Query/FacetsQuery.hs
--- a/Data/Factual/Query/FacetsQuery.hs
+++ b/Data/Factual/Query/FacetsQuery.hs
@@ -35,7 +35,7 @@
 -- make a request.
 instance Query FacetsQuery where
   toPath query = (show $ table query)
-               ++ "facets?"
+               ++ "/facets?"
                ++ joinAndFilter [ searchString $ search query
                                 , selectString $ select query
                                 , filtersString $ filters query
diff --git a/Data/Factual/Query/ReadQuery.hs b/Data/Factual/Query/ReadQuery.hs
--- a/Data/Factual/Query/ReadQuery.hs
+++ b/Data/Factual/Query/ReadQuery.hs
@@ -38,7 +38,7 @@
 -- make a request.
 instance Query ReadQuery where
   toPath query = (show $ table query)
-               ++ "read?"
+               ++ "?"
                ++ joinAndFilter [ searchString $ search query
                                 , selectString $ select query
                                 , limitString $ limit query
diff --git a/Data/Factual/Query/SchemaQuery.hs b/Data/Factual/Query/SchemaQuery.hs
--- a/Data/Factual/Query/SchemaQuery.hs
+++ b/Data/Factual/Query/SchemaQuery.hs
@@ -16,4 +16,4 @@
 
 -- SchemaQuery is a member of Query typeclass so that it can generate a response.
 instance Query SchemaQuery where
-  toPath (SchemaQuery table) = (show $ table) ++ "schema"
+  toPath (SchemaQuery table) = (show $ table) ++ "/schema"
diff --git a/Data/Factual/Shared/Table.hs b/Data/Factual/Shared/Table.hs
--- a/Data/Factual/Shared/Table.hs
+++ b/Data/Factual/Shared/Table.hs
@@ -15,16 +15,18 @@
            | WorldGeographies
            | ProductsCPG
            | ProductsCrosswalk
+           | Monetize
            | Custom String
            deriving Eq
 
 -- Table is a member of the Show typeclass to generate the beginning of the path.
 instance Show Table where
-  show Places              = "/t/places/"
-  show USRestaurants       = "/t/restaurants-us/"
-  show Global              = "/t/global/"
+  show Places              = "/t/places"
+  show USRestaurants       = "/t/restaurants-us"
+  show Global              = "/t/global"
   show HealthCareProviders = "/t/health-care-providers-us"
   show WorldGeographies    = "/t/world-geographies"
   show ProductsCPG         = "/t/products-cpg"
   show ProductsCrosswalk   = "/t/products-crosswalk"
-  show (Custom name)       = "/t/" ++ name ++ "/"
+  show Monetize            = "/places/monetize"
+  show (Custom name)       = "/t/" ++ name
diff --git a/Data/Factual/Write/Flag.hs b/Data/Factual/Write/Flag.hs
--- a/Data/Factual/Write/Flag.hs
+++ b/Data/Factual/Write/Flag.hs
@@ -40,7 +40,7 @@
 -- The Flag type is a member of the Write typeclass so it can be sent as a post
 -- request to the API.
 instance Write Flag where
-  path flag = (show $ table flag) ++ (factualId flag) ++ "/flag"
+  path flag = (show $ table flag) ++ "/" ++ (factualId flag) ++ "/flag"
   body flag = "problem=" ++ (show $ problem flag) ++ "&" ++
               "user=" ++ (user flag) ++ "&" ++
               joinAndFilter [ commentString flag
diff --git a/Data/Factual/Write/Submit.hs b/Data/Factual/Write/Submit.hs
--- a/Data/Factual/Write/Submit.hs
+++ b/Data/Factual/Write/Submit.hs
@@ -33,10 +33,11 @@
 -- The following functions are helpers for the Write typeclass functions.
 pathString :: Submit -> String
 pathString submit
-  | factualId submit == Nothing = (show $ table submit) ++ "submit"
-  | otherwise = (show $ table submit) ++
-                (fromJust $ factualId submit) ++
-                "/submit"
+  | factualId submit == Nothing = (show $ table submit) ++ "/submit"
+  | otherwise = (show $ table submit)
+              ++ "/"
+              ++ (fromJust $ factualId submit)
+              ++ "/submit"
 
 valuesString :: M.Map String String -> String
 valuesString values = "{" ++ join "," (map valueString $ M.keys values) ++ "}"
diff --git a/Network/Factual/API.hs b/Network/Factual/API.hs
--- a/Network/Factual/API.hs
+++ b/Network/Factual/API.hs
@@ -106,7 +106,7 @@
 extractJSON = fromJust . decode . rspPayload
 
 headersList :: [(String, String)]
-headersList = [("X-Factual-Lib", "factual-haskell-driver-0.3.0")]
+headersList = [("X-Factual-Lib", "factual-haskell-driver-0.3.1")]
 
 basePath :: String
 basePath = "http://api.v3.factual.com"
diff --git a/factual-api.cabal b/factual-api.cabal
--- a/factual-api.cabal
+++ b/factual-api.cabal
@@ -1,9 +1,9 @@
 name:            factual-api
-version:         0.3.0
+version:         0.3.1
 license:         BSD3
 license-file:    LICENSE.txt
 category:        API, Web
-copyright:       (c) 2011 Rudiger Lippert
+copyright:       (c) 2012 Rudiger Lippert
 author:          Rudiger Lippert <rudy@factual.com>
 maintainer:      Rudiger Lippert <rudy@factual.com>
 stability:       stable
diff --git a/test/Tests.hs b/test/Tests.hs
--- a/test/Tests.hs
+++ b/test/Tests.hs
@@ -73,22 +73,22 @@
                             where token = generateToken key secret
 
 placeTablePathTest = TestCase (do
-  let expected = "/t/places/read?include_count=false"
+  let expected = "/t/places?include_count=false"
   let path = toPath $ blankReadQuery { table = Places }
   assertEqual "Correct path for places table" expected path)
 
 restaurantsTablePathTest = TestCase (do
-  let expected = "/t/restaurants-us/read?include_count=false"
+  let expected = "/t/restaurants-us?include_count=false"
   let path = toPath $ blankReadQuery { table = USRestaurants }
   assertEqual "Correct path for us restaurants table" expected path)
 
 globalTablePathTest = TestCase (do
-  let expected = "/t/global/read?include_count=false"
+  let expected = "/t/global?include_count=false"
   let path = toPath $ blankReadQuery { table = Global }
   assertEqual "Correct path for global table" expected path)
 
 customTablePathTest = TestCase (do
-  let expected = "/t/foo/read?include_count=false"
+  let expected = "/t/foo?include_count=false"
   let path = toPath $ blankReadQuery { table = Custom "foo" }
   assertEqual "Correct path for custom table" expected path)
 
@@ -103,117 +103,117 @@
   assertEqual "Correct path for geocode" expected path)
 
 andSearchPathTest = TestCase (do
-  let expected = "/t/places/read?q=foo%20bar&include_count=false"
+  let expected = "/t/places?q=foo%20bar&include_count=false"
   let path = toPath $ blankReadQuery { search = AndSearch ["foo", "bar"] }
   assertEqual "Correct path for ANDed search" expected path)
 
 orSearchPathTest = TestCase (do
-  let expected = "/t/places/read?q=foo%2Cbar&include_count=false"
+  let expected = "/t/places?q=foo%2Cbar&include_count=false"
   let path = toPath $ blankReadQuery { search = OrSearch ["foo", "bar"] }
   assertEqual "Correct path for ANDed search" expected path)
 
 selectPathTest = TestCase (do
-  let expected = "/t/places/read?select=foo%2Cbar&include_count=false"
+  let expected = "/t/places?select=foo%2Cbar&include_count=false"
   let path = toPath $ blankReadQuery { select = ["foo", "bar"] }
   assertEqual "Correct path for select terms" expected path)
 
 limitPathTest = TestCase (do
-  let expected = "/t/places/read?limit=321&include_count=false"
+  let expected = "/t/places?limit=321&include_count=false"
   let path = toPath $ blankReadQuery { limit = Just 321 }
   assertEqual "Correct path for limit" expected path)
 
 offsetPathTest = TestCase (do
-  let expected = "/t/places/read?offset=321&include_count=false"
+  let expected = "/t/places?offset=321&include_count=false"
   let path = toPath $ blankReadQuery { offset = Just 321 }
   assertEqual "Correct path for offset" expected path)
 
 equalNumFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A123.4%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A123.4%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [EqualNum "field" 123.4] }
   assertEqual "Correct path for equal number filter" expected path)
 
 equalStrFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%22value%22%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%22value%22%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [EqualStr "field" "value"] }
   assertEqual "Correct path for equal string filter" expected path)
 
 notEqualNumFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%7B%22%24neq%22%3A123.4%7D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%7B%22%24neq%22%3A123.4%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [NotEqualNum "field" 123.4] }
   assertEqual "Correct path for not equal number filter" expected path)
 
 notEqualStrFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%7B%22%24neq%22%3A%22value%22%7D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%7B%22%24neq%22%3A%22value%22%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [NotEqualStr "field" "value"] }
   assertEqual "Correct path for not equal string filter" expected path)
 
 inNumListFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%7B%22%24in%22%3A%5B123.4%2C5432.1%5D%7D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%7B%22%24in%22%3A%5B123.4%2C5432.1%5D%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [InNumList "field" [123.4, 5432.1]] }
   assertEqual "Correct path for in number list filter" expected path)
 
 inStrListFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%7B%22%24in%22%3A%5B%22value%22%2C%22other%22%5D%7D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%7B%22%24in%22%3A%5B%22value%22%2C%22other%22%5D%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [InStrList "field" ["value","other"]] }
   assertEqual "Correct path for in string list filter" expected path)
 
 notInNumListFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%7B%22%24nin%22%3A%5B123.4%2C5432.1%5D%7D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%7B%22%24nin%22%3A%5B123.4%2C5432.1%5D%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [NotInNumList "field" [123.4, 5432.1]] }
   assertEqual "Correct path for not in number list filter" expected path)
 
 notInStrListFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%7B%22%24nin%22%3A%5B%22value%22%2C%22other%22%5D%7D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%7B%22%24nin%22%3A%5B%22value%22%2C%22other%22%5D%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [NotInStrList "field" ["value","other"]] }
   assertEqual "Correct path for not in string list filter" expected path)
 
 beginsWithFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%7B%22%24bw%22%3A%22val%22%7D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%7B%22%24bw%22%3A%22val%22%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [BeginsWith "field" "val"] }
   assertEqual "Correct path for begins with filter" expected path)
 
 notBeginsWithFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%7B%22%24nbw%22%3A%22val%22%7D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%7B%22%24nbw%22%3A%22val%22%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [NotBeginsWith "field" "val"] }
   assertEqual "Correct path for not begins with filter" expected path)
 
 beginsWithAnyFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%7B%22%24bwin%22%3A%5B%22val%22%2C%22ot%22%5D%7D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%7B%22%24bwin%22%3A%5B%22val%22%2C%22ot%22%5D%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [BeginsWithAny "field" ["val","ot"]] }
   assertEqual "Correct path for begins with any filter" expected path)
 
 notBeginsWithAnyFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%7B%22%24nbwin%22%3A%5B%22val%22%2C%22ot%22%5D%7D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%7B%22%24nbwin%22%3A%5B%22val%22%2C%22ot%22%5D%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [NotBeginsWithAny "field" ["val","ot"]] }
   assertEqual "Correct path for not begins with any filter" expected path)
 
 isBlankFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%7B%22%24blank%22%3Atrue%7D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%7B%22%24blank%22%3Atrue%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [IsBlank "field"] }
   assertEqual "Correct path for is blank filter" expected path)
 
 isNotBlankFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22field%22%3A%7B%22%24blank%22%3Afalse%7D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22field%22%3A%7B%22%24blank%22%3Afalse%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [IsNotBlank "field"] }
   assertEqual "Correct path for is not blank filter" expected path)
 
 andFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22%24and%22%3A%5B%7B%22field1%22%3A%7B%22%24blank%22%3Atrue%7D%7D%2C%7B%22field2%22%3A%7B%22%24blank%22%3Afalse%7D%7D%5D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22%24and%22%3A%5B%7B%22field1%22%3A%7B%22%24blank%22%3Atrue%7D%7D%2C%7B%22field2%22%3A%7B%22%24blank%22%3Afalse%7D%7D%5D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [And [IsBlank "field1", IsNotBlank "field2"]] }
   assertEqual "Correct path for and filter" expected path)
 
 orFilterTest = TestCase (do
-  let expected = "/t/places/read?filters=%7B%22%24or%22%3A%5B%7B%22field1%22%3A%7B%22%24blank%22%3Atrue%7D%7D%2C%7B%22field2%22%3A%7B%22%24blank%22%3Afalse%7D%7D%5D%7D&include_count=false"
+  let expected = "/t/places?filters=%7B%22%24or%22%3A%5B%7B%22field1%22%3A%7B%22%24blank%22%3Atrue%7D%7D%2C%7B%22field2%22%3A%7B%22%24blank%22%3Afalse%7D%7D%5D%7D&include_count=false"
   let path = toPath $ blankReadQuery { filters = [Or [IsBlank "field1", IsNotBlank "field2"]] }
   assertEqual "Correct path for or filter" expected path)
 
 geoTest = TestCase (do
-  let expected = "/t/places/read?geo=%7B%22%24circle%22%3A%7B%22%24center%22%3A%5B300.1%2C%20200.3%5D%2C%22%24meters%22%3A100.5%7D%7D&include_count=false"
+  let expected = "/t/places?geo=%7B%22%24circle%22%3A%7B%22%24center%22%3A%5B300.1%2C%20200.3%5D%2C%22%24meters%22%3A100.5%7D%7D&include_count=false"
   let path = toPath $ blankReadQuery { geo = Just (Circle 300.1 200.3 100.5) }
   assertEqual "Correct path for geo" expected path)
 
 includeCountTest = TestCase (do
-  let expected = "/t/places/read?include_count=true"
+  let expected = "/t/places?include_count=true"
   let path = toPath $ blankReadQuery { includeCount = True }
   assertEqual "Correct path for include count" expected path)
 
