diff --git a/Text/Chatty/Expansion/Vars.hs b/Text/Chatty/Expansion/Vars.hs
--- a/Text/Chatty/Expansion/Vars.hs
+++ b/Text/Chatty/Expansion/Vars.hs
@@ -84,9 +84,21 @@
 instance MonadExpand m => MonadExpand (ExpanderT m) where
   expand = lift . expand <=< expandVars
 
--- | Expand $variables. TODO: ${var}
+-- | Expand $variables
 expandVars :: (Monad m,Functor m,ExpanderEnv m) => String -> m String
 expandVars [] = return []
+expandVars ('\\':'$':ss) = do r <- expandVars ss; return ('$':r)
+expandVars ('$':'{':ss) =
+  let nm = takeBrace 0 ss
+      rm = drop (length nm + 1) ss
+      takeBrace 0 ('}':ss) = ""
+      takeBrace n ('}':ss) = '}' : takeBrace (n-1) ss
+      takeBrace n ('{':ss) = '{' : takeBrace (n+1) ss
+      takeBrace n (s:ss) = s : takeBrace n ss
+  in do
+    v <- fmap show $ mgetv nm
+    r <- expandVars rm
+    return (v++r)
 expandVars ('$':ss) =
   let (nm,rm) = (takeWhile isAnum &&& dropWhile isAnum) ss
   in do
diff --git a/chatty.cabal b/chatty.cabal
--- a/chatty.cabal
+++ b/chatty.cabal
@@ -10,7 +10,7 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:             0.5.4.1
+version:             0.5.4.2
 
 -- A short (one-line) description of the package.
 synopsis:            Some monad transformers and typeclasses to simplify I/O on a transformer stack.
