diff --git a/Language/SQL/SimpleSQL/Parser.lhs b/Language/SQL/SimpleSQL/Parser.lhs
index 2f6086a..56ba67b 100644
--- a/Language/SQL/SimpleSQL/Parser.lhs
+++ b/Language/SQL/SimpleSQL/Parser.lhs
@@ -87,7 +87,7 @@ interval '5' month
 >     IntervalLit
 >     <$> stringLiteral
 >     <*> identifierString
->     <*> optionMaybe (try $ parens (read <$> many1 digit))
+>     <*> optionMaybe (try $ parens integerLiteral)
 
 > literal :: P ScalarExpr
 > literal = number <|> estring <|> interval
@@ -151,22 +151,26 @@ functioncall(args) over ([partition by ids] [order by orderitems])
 
 No support for explicit frames yet.
 
+The convention in this file is that the 'Suffix', erm, suffix on
+parser names means that they have been left factored.
+
 > windowSuffix :: ScalarExpr -> P ScalarExpr
-> windowSuffix e@(App f es) =
->     choice [try (keyword_ "over")
->             *> parens (WindowApp f es
->                        <$> option [] partitionBy
->                        <*> option [] orderBy)
->            ,return e]
+> windowSuffix (App f es) =
+>     try (keyword_ "over")
+>     *> parens (WindowApp f es
+>                <$> option [] partitionBy
+>                <*> option [] orderBy)
 >   where
 >     partitionBy = try (keyword_ "partition") >>
 >         keyword_ "by" >>
 >         commaSep1 scalarExpr'
+> windowSuffix _ = fail ""
 
-> windowSuffix e = return e
+TODO: review all the suffix functions, use the optionSuffix combinator
+to simplify the suffix parsers
 
 > app :: P ScalarExpr
-> app = aggOrApp >>= windowSuffix
+> app = aggOrApp >>= optionSuffix windowSuffix
 
 == case expression
 
@@ -411,9 +415,16 @@ split out the binary op parsing from this function to above
 >     keywords ks = unwords <$> mapM keyword ks
 
 TODO: create the fixity adjuster. This should take a list of operators
-with precendence and associativity and adjust a scalar expr tree to
+with precedence and associativity and adjust a scalar expr tree to
 match these. It shouldn't attempt to descend into scalar expressions
-inside nested query exprs in subqueries.
+inside nested query exprs in subqueries. This way we separate out
+parsing from handling the precedence and associativity. Is it a good
+idea to separate these? I'm not sure. I think it makes some error
+messages potentially a little less helpful without some extra work,
+but apart from that, I think it is a win in terms of code clarity. The
+errors which are harder to produce nicely I think are limited to
+chained binary operators with no parens which have no associativity
+which should be a parse error.
 
 > {-sqlFixities :: [HSE.Fixity]
 > sqlFixities = HSE.infixl_ 9 ["*", "/"]
@@ -698,6 +709,10 @@ make this choice.
 >         i <- int
 >         return (p ++ "e" ++ s ++ i)
 
+lexer for integer literals which appear in some places in sql
+
+> integerLiteral :: P Int
+> integerLiteral = read <$> many1 digit <* whiteSpace
 
 whitespace parser which skips comments also
 
diff --git a/simple-sql-parser.cabal b/simple-sql-parser.cabal
index 27f5db4..ff17b69 100644
--- a/simple-sql-parser.cabal
+++ b/simple-sql-parser.cabal
@@ -2,7 +2,7 @@ name:                simple-sql-parser
 version:             0.1.0.0
 synopsis:            A parser for SQL queries
 
-description:         A parser for SQL queries, using Parsec. Also includes pretty printer. Aims to support most of SQL2003 queries plus other dialects.
+description:         A parser for SQL queries, using Parsec. Also includes pretty printer. Aims to support most of SQL2003 queries plus other SQL dialects.
 
 homepage:            https://github.com/JakeWheat/simple_sql_parser
 license:             BSD3
@@ -24,12 +24,12 @@ library
   exposed-modules:     Language.SQL.SimpleSQL.Pretty,
                        Language.SQL.SimpleSQL.Parser,
                        Language.SQL.SimpleSQL.Syntax
-  -- other-modules:       
-  -- other-extensions:    
+  -- other-modules:
+  -- other-extensions:
   build-depends:       base >=4.6 && <4.7,
                        parsec >=3.1 && <3.2,
                        mtl >=2.1 && <2.2,
                        pretty >= 1.1 && < 1.2
-  -- hs-source-dirs:      
+  -- hs-source-dirs:
   default-language:    Haskell2010
-  ghc-options: -Wall
\ No newline at end of file
+  ghc-options:         -Wall
\ No newline at end of file