diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+0.8.2
+---
+* Add `+` and `-` to the set of layout-based list syntax bullets.
+  All elements of the list are checked to see that a consistent
+  bullet is used. Different bullets might be used to help make
+  nested lists more understandable. `-` might be used to make things
+  look more like YAML
+
 0.8.1
 ---
 * Allow underscores in number literals
diff --git a/config-value.cabal b/config-value.cabal
--- a/config-value.cabal
+++ b/config-value.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                config-value
-version:             0.8.1
+version:             0.8.2
 synopsis:            Simple, layout-based value language similar to YAML or JSON
 license:             MIT
 license-file:        LICENSE
@@ -15,7 +15,7 @@
                      with fewer special cases and fewer dependencies. It emphasizes
                      layout structure for sections and lists, and requires quotes
                      around strings.
-tested-with:         GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.5, GHC==8.8.4, GHC==8.10.2
+tested-with:         GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.5, GHC==8.8.4, GHC==8.10.2, GHC==9.0.1
 
 extra-source-files:
   README.md
@@ -40,7 +40,7 @@
     Config.Value
 
   build-depends:
-    base       >= 4.8     && < 4.15,
+    base       >= 4.8     && < 4.17,
     array      >= 0.4     && < 0.6,
     containers >= 0.5     && < 0.7,
     pretty     >= 1.1.1.0 && < 1.2,
diff --git a/src/Config.hs b/src/Config.hs
--- a/src/Config.hs
+++ b/src/Config.hs
@@ -128,9 +128,11 @@
 
 Example: @[1, 2, 3]@
 
-Layout list entries are started with a leading @*@. Each leading @*@ must occur
-in the some column of the file. Lists can be nested by starting the new list
-on a column to the right of the current list.
+Layout list entries are started with a leading @*@, @+@, or @-@. Each leading bullet
+must occur in the some column of the file. Lists can be nested by starting the new
+list on a column to the right of the current list. A single list must use the same
+bullet token for every element of the list. Nested lists can choose a different
+bullet. This can help visually distinguish nested lists.
 
 Layout based lists can not occur inside inline list syntax. Layout based section lists
 can occur inside layout based lists
@@ -305,7 +307,7 @@
     T.Error e     -> explainError e
     T.Atom atom   -> "parse error: unexpected atom: `" ++ Text.unpack atom ++ "`"
     T.String str  -> "parse error: unexpected string: " ++ show (Text.unpack str)
-    T.Bullet      -> "parse error: unexpected bullet '*'"
+    T.Bullet s    -> "parse error: unexpected bullet '" ++ Text.unpack s ++ "'"
     T.Comma       -> "parse error: unexpected comma ','"
     T.Section s   -> "parse error: unexpected section: `" ++ Text.unpack s ++ "`"
     T.Number{}    -> "parse error: unexpected number"
diff --git a/src/Config/Lexer.x b/src/Config/Lexer.x
--- a/src/Config/Lexer.x
+++ b/src/Config/Lexer.x
@@ -65,7 +65,9 @@
 "["                     { token_ OpenList               }
 ","                     { token_ Comma                  }
 "]"                     { token_ CloseList              }
-"*"                     { token_ Bullet                 }
+"*"                     { token Bullet                  }
+"-"                     { token Bullet                  }
+"+"                     { token Bullet                  }
 
 "-"? 0 [Xx] @spacer @hexadecimal ("." @hexadecimal?)? @hexexponent? { token number }
 "-"? 0 [Oo] @spacer @octal       ("." @octal      ?)?               { token number }
diff --git a/src/Config/Parser.y b/src/Config/Parser.y
--- a/src/Config/Parser.y
+++ b/src/Config/Parser.y
@@ -1,5 +1,5 @@
 {
-{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE Trustworthy, OverloadedStrings #-}
 
 module Config.Parser (parseValue) where
 
@@ -15,11 +15,13 @@
 STRING                          { Located _ T.String{}          }
 ATOM                            { Located _ T.Atom{}            }
 NUMBER                          { Located _ T.Number{}          }
-'*'                             { Located $$ T.Bullet            }
-'['                             { Located $$ T.OpenList          }
+'*'                             { Located $$ (T.Bullet "*")     }
+'+'                             { Located $$ (T.Bullet "+")     }
+'-'                             { Located $$ (T.Bullet "-")     }
+'['                             { Located $$ T.OpenList         }
 ','                             { Located _ T.Comma             }
 ']'                             { Located _ T.CloseList         }
-'{'                             { Located $$ T.OpenMap           }
+'{'                             { Located $$ T.OpenMap          }
 '}'                             { Located _ T.CloseMap          }
 SEP                             { Located _ T.LayoutSep         }
 END                             { Located _ T.LayoutEnd         }
@@ -37,7 +39,9 @@
 
 value ::                        { Value Position                }
   : sections END                { sections $1                   }
-  | '*' list END                { List $1 (reverse $2)          }
+  | '*' list('*') END           { List $1 (reverse $2)          }
+  | '-' list('-') END           { List $1 (reverse $2)          }
+  | '+' list('+') END           { List $1 (reverse $2)          }
   | simple                      { $1                            }
 
 simple ::                       { Value Position                }
@@ -70,9 +74,9 @@
 section ::                      { Section Position              }
   : SECTION value               { section $1 $2                 }
 
-list ::                         { [Value Position]              }
-  :              value          { [$1]                          }
-  | list SEP '*' value          { $4 : $1                       }
+list(blt) ::                    { [Value Position]              }
+  :                   value     { [$1]                          }
+  | list(blt) SEP blt value     { $4 : $1                       }
 
 inlinelist ::                   { [Value Position]              }
   :                             { []                            }
diff --git a/src/Config/Tokens.hs b/src/Config/Tokens.hs
--- a/src/Config/Tokens.hs
+++ b/src/Config/Tokens.hs
@@ -36,7 +36,7 @@
   = Section Text
   | String Text
   | Atom Text
-  | Bullet
+  | Bullet Text
   | Comma
   | Number Number
   | OpenList
@@ -99,5 +99,5 @@
 usesLayout :: Located Token -> Bool
 usesLayout t
   | Section{} <- locThing t = True
-  | Bullet    <- locThing t = True
+  | Bullet{}  <- locThing t = True
   | otherwise               = False
